CodeAccessPermission.PermitOnly Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Çağrı yığınındaki daha yüksek çağıranların, geçerli örnek tarafından belirtilen kaynak dışındaki tüm kaynaklara erişmek için bu yöntemi çağıran kodu kullanmasını engeller.
public:
virtual void PermitOnly();
public void PermitOnly();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()
Uygulamalar
Özel durumlar
Geçerli çerçeve için zaten etkin PermitOnly() bir çerçeve var.
Açıklamalar
Important
PermitOnly yöntemi yalnızca kaynakları tam olarak güvenilen kodla yanlışlıkla erişime karşı korumak için kullanılmalıdır. Kaynakları güvenilmeyen kod tarafından kasıtlı olarak kötüye kullanıma karşı korumak için kullanılmamalıdır. Örneğin, yöntem A bir izin için bir PermitOnly verirse ve sonra yöntemini Bçağırırsa, yöntemi B bir Assertvererek öğesini geçersiz kılabilirPermitOnly. Çağrılan yöntem yığında her zaman daha yüksektir. Bu nedenle, yöntem B korumalı bir kaynağa erişmeye çalışırsa, yöntem hemen çağıran olduğundan B güvenlik sistemi onunla izinleri denetlemeye başlar ve yığında hiç veya PermitOnly daha düşük olmadığını Deny onaylamak için yığında aşağı doğru ilerler. Kaynağa erişmeye çalışan yöntemi B, yöntemini kullanarak Assert yığın adımlarını hemen durdurabilir. Bu durumda, PermitOnly yönteme (çağıran yöntem A ) göre yığına yerleştirilen hiçbir zaman bulunmaz.
PermitOnly , her iki neden yığınının da başarısız olmasına neden olan adımların aksi takdirde başarılı olması durumunda başarısız olmasına benzer Deny. Aradaki Deny fark, yığın yürüyüş işleminin başarısız olmasına neden olacak izinleri belirtir, ancak PermitOnly yığın yürüyüşlerinin başarısız olmasına neden olmayan tek izinleri belirtir.
Kodunuzun yalnızca belirtilen kaynaklara erişmek için kullanılabildiğinden emin olmak için bu yöntemi çağırın. çağrısı PermitOnly , çağıran kod çağırana geri dönene kadar etkilidir. Bir çerçevede yalnızca bir tane PermitOnly etkin olabilir. Çerçevede etkin PermitOnly bir öğe olduğunda çağrılmaya PermitOnly çalışıldığında sonuç olarak elde ediliyorSecurityException. Etkin RevertPermitOnlyPermitOnlybir öğesini çağırmak veya RevertAll kaldırmak için.
PermitOnly bu izin için bir talep başarılı olmadığından verilmemiş bir izin için yoksayılır. Ancak, çağrı yığınında daha düşük kod daha sonra bu izni çağırırsaDemand, yığın kılavuzu çağırmaya PermitOnlyçalışan koda ulaştığında bir SecurityException oluşturulur. Bunun nedeni, çağrılan PermitOnly koda bu izin için çağrılsa PermitOnly bile izin verilmemiş olmasıdır. Çağrı yığını genellikle aşağı doğru büyüyen olarak temsil edilir, böylece çağrı yığınında daha düşük çağrı yığını çağrı yöntemlerinde daha yüksek yöntemler bulunur.
Devralanlara Notlar
Bu yöntemi geçersiz kılamazsınız.