Aracılığıyla paylaş


Özel derlemeler izinler mekanizmanın

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

  1. Kodunuzu güvenli arama yapmak için 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 ilkesi yapılandırma dosyaları hakkında daha fazla bilgi için bkz: Raporlama Hizmetleri Güvenlik İlkesi dosyalarını kullanma.

  3. Gerekli izinleri bir parçası onaylama işlemi yöntem güvenli çağrı yapıldığı içinde.Rapor, rapor sunucusu tarafından çağrılan özel derleme kod parçasıdır bu gereklidir çünkü ifade ana derlemesi, birlikte çalıştığı yürütme izni varsayılan olarak.The Execution permission set enables code to run, but not to use protected resources.

  4. Özel derleme ile işaretlemek AllowPartiallyTrustedCallersAttribute kesin adıyla imzalanmış olup olmadığını.Özel derlemeler raporun parçası olan bir rapor ifadesi olarak adlandırılan bu gereklidir çünkü ifade ana derlemesi, varsayılan olarak, değil verilen FullTrust; Böylece bir "kısmen güvenilen" olur Arayan.Daha fazla bilgi için bkz: Özel derlemeler kesin adlandırılmış kullanma.

Güvenli çağrı uygulama

Vermek için ilke yapılandırma dosyaları değiştirebilir, derleme özel izinler.Örneğin, para birimi dönüştürme işlemek için özel bir derleme yazılıyorsa, geçerli döviz kurları bir dosyadan okunan gerekebilir.Kuru bilgi almak için size bir ek güvenlik izni eklemeniz gerekir FileIOPermission, sizin için küme birleştirme.Aşağıdaki ek giriş ilkesinde olun yapılandırma dosyası:

<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üme başvuran 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\MSRS10_50.MSSQLSERVER\MSSQL\Reporting Services\ReportServer\bin\CurrencyConversion.dll"/>
</CodeGroup>

Kodunuzu uygun izni almak için sırada özel derleme kod içinde izin onaylama gerekir.Örneğin, bir xml dosyası C:\CurrencyRates.xml, salt okunur erişimi eklemek istiyorsanız aşağıdaki kodu eklemeniz gerekir, yöntem:

// 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");
...

Size de belirtilme yöntem öznitelik olarak ekleyebilirsiniz:

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

Daha fazla bilgi için bkz: "..NET Framework güvenlik" içinde..NET Framework Geliştirici Kılavuzu '.

Ayrıca bkz.

Diğer Kaynaklar