Aracılığıyla paylaş


Özel birleştirmeler, izinleri belirten

Varsayılan olarak, özel bir derleme kod ile sınırlı çalışır. Yürütme izni küme.Bazı durumlarda, korunan kaynakları (örneğin, bir dosya veya kayıt defteri), güvenlik sisteminde güvenli çağrıları yapan özel bir derleme uygulamak isteyebilirsiniz.Bunu yapmak için aşağıdakileri yapmalısınız:

  1. Güvenli arama yapmak için kodunuzu gereken tam izinleri tanımlayın.If this method is part of a Microsoft .NET Framework library, this information should be included in the method documentation.

  2. Özel derleme gerekli izinleri vermek için rapor sunucusu ilke yapılandırma dosyaları değiştirin.Güvenlik ilkesini yapılandırma dosyaları hakkında daha fazla bilgi için bkz: Reporting Services güvenlik ilkesi dosyalarını kullanma.

  3. Gerekli izinleri bir parçası olarak onaylama işlemi yöntem güvenli Çağrının yapıldığı yer.rapor sunucusu tarafından çağrılan özel derleme kod çalışır rapor ifade ana derlemesi bir parçası olduğundan bu durum gereklidir Yürütme izninin varsayılan.The Execution permission küme enables code to run, but not to use protected resources.

  4. Özel derlemesi ile işaretle AllowPartiallyTrustedCallersAttribute güçlü bir adla imzalanmışsa.Özel bir derleme değil verilen varsayılan olarak, rapor ifade ana derlemesi, bir parçası olan bir rapor ifadeden denir, çünkü bu gereklidir FullTrust; böylece "kısmen güvenilen" arayanı olduğu.Daha fazla bilgi için bkz: Özel derlemeler kesin adlandırılmış kullanma.

Güvenli çağrı uygulama

Değiştirebileceğiniz ilke yapılandırma dosyaları, derleme vermek için özel izinler.Örneğin, para birimi dönüştürmesi işlemek için özel bir derleme yazma, geçerli döviz bir dosyadan okunan gerekebilir.Hızı bilgilerini almak için , size bir ek güvenlik izni eklemek gerekir FileIOPermissioniçin izninizi küme derleme için.Ilke yapılandırma dosyasında, aşağıdaki ek giriş yapabilirsiniz:

<PermissionSet class="NamedPermissionSet"
   version="1"
   Name="CurrencyRatesFilePermissionSet"
   Description="A special permission set that grants read access to my currency rates file.">
      <IPermission class="FileIOPermission"
         version="1"
         Read="C:\CurrencyRates.xml"/>
      <IPermission class="SecurityPermission"
         version="1"
         Flags="Execution, Assertion"/>
</PermissionSet>

Daha sonra bu izin kümesi başvuran bir kod grubu ekleyin:

<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="CurrencyRatesFilePermissionSet"
   Name="MyNewCodeGroup"
   Description="A special code group for my custom assembly.">
   <IMembershipCondition class="UrlMembershipCondition"
      version="1"
      Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\CurrencyConversion.dll"/>
</CodeGroup>

Onaylama uygun izni almak, kodunuz için sırada, izni özel derleme kodunuz içinde işlemi gerekir.Örneğin, bir XML dosyasına C:\CurrencyRates.xml, salt okunur erişimi eklemek istiyorsanız, aşağıdaki kodu yönteminize eklemelisiniz:

// C#
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\CurrencyRates.xml");
try
{
   permission.Assert();
   // Load the XML currency rates file
   XmlDocument doc = new XmlDocument();
   doc.Load(@"C:\CurrencyRates.xml");
...

Belirtilme bir yöntem özniteliği da ekleyebilirsiniz:

[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]

Daha fazla bilgi için .NET Framework Developer's Guide ".NET Framework güvenlik" konusuna bakın.