Freigeben über


WebPermission-Klasse

Steuert die Zugriffsrechte für den Zugriff auf HTTP-Internetressourcen.

Namespace: System.Net
Assembly: System (in system.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public NotInheritable Class WebPermission
    Inherits CodeAccessPermission
    Implements IUnrestrictedPermission
'Usage
Dim instance As WebPermission
[SerializableAttribute] 
public sealed class WebPermission : CodeAccessPermission, IUnrestrictedPermission
[SerializableAttribute] 
public ref class WebPermission sealed : public CodeAccessPermission, IUnrestrictedPermission
/** @attribute SerializableAttribute() */ 
public final class WebPermission extends CodeAccessPermission implements IUnrestrictedPermission
SerializableAttribute 
public final class WebPermission extends CodeAccessPermission implements IUnrestrictedPermission

Hinweise

WebPermission stellt für die Steuerung des Zugriffs auf Internetressourcen einen Satz von Methoden und Eigenschaften bereit. Mit einer WebPermission können Sie, je nach dem bei der Erstellung der WebPermission festgelegten PermissionState, beschränkten oder unbeschränkten Zugriff auf die Ressource bereitstellen.

Erstellen Sie eine WebPermission-Instanz, indem Sie ihren Konstruktor mithilfe eines der folgenden Parametersätze aufrufen:

  • Keine Parameter. Der Standard-PermissionState ist None.

  • Ein PermissionState. Geben Sie Unrestricted an, um die Verwendung eines beliebigen URI in der Zielklasse zu ermöglichen, oder None, um Zugriff nur auf die mithilfe der AddPermission-Methode angegebenen URIs zu gewähren.

  • Ein NetworkAccess-Wert und eine URI-Zeichenfolge. Der angegebene URI verfügt über vom NetworkAccess-Wert erteilte Berechtigungen.

  • Ein NetworkAccess-Bezeichner und regulärer URI-Ausdruck.

Die ConnectList und AcceptList enthalten die URIs, für die Sie Zugriffsberechtigung erteilt haben. Verwenden Sie AddPermission, um einer der beiden Listen einen URI hinzuzufügen. Wenn Sie Accept als NetworkAccess-Parameter übergeben, wird der URI der AcceptList hinzugefügt. WebPermission lässt nun Verbindungen zu der Zielklasse mit URIs zu, die mit der AcceptList übereinstimmen.

Warnung

Wenn Sie den Zugriff auf eine Internetressource mit Deny verweigern möchten, müssen Sie Deny für den Zugriff auf alle möglichen Pfade zu dieser Ressource festlegen. Es ist jedoch vorteilhafter, den Zugriff nur auf die bestimmte Ressource zu beschränken. Weitere Informationen über diese Vorgehensweise finden Sie unter dem Thema Verwenden der Deny-Methode.

Hinweis

Sie müssen mit Deny den Zugriff lediglich über den kanonischen Pfad der Ressource verweigern. Es ist nicht erforderlich, alle syntaktischen Variationen für den Pfad zu verwenden.

Hinweis

Benutzername und Standardanschlussinformationen werden aus dem Uri entfernt, bevor der Vergleich mit dem vom WebPermission(NetworkAccess,Regex)-Konstruktor bereitgestellten regulären Ausdrucksargument ausgeführt wird. Wenn der reguläre Ausdruck Benutzerinformationen oder die Standardanschlussnummer enthält, stimmt keiner der Uri mit dem regulären Ausdruck überein.

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie eine neue Instanz von WebPermission mithilfe von Regex erstellt wird. Weitere Hosts werden der WebPermission-Liste für das Verbinden und Akzeptieren hinzugefügt. Schließlich wird die Liste für das Verbinden und Akzeptieren auf der Konsole angezeigt.

' Create a Regex that accepts all the URLs contianing the host fragment www.contoso.com.
Dim myRegex As New Regex("http://www\.contoso\.com/.*")
  
' Create a WebPermission that gives permission to all the hosts containing same host fragment.
Dim myWebPermission As New WebPermission(NetworkAccess.Connect, myRegex)
' Add connect privileges for a www.adventure-works.com.
myWebPermission.AddPermission(NetworkAccess.Connect, "https://www.adventure-works.com")
' Add accept privileges for www.alpineskihouse.com.
myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/")
' Check whether all callers higher in the call stack have been granted the permission.
myWebPermission.Demand()
  
' Get all the URIs with Connect permission.
Dim myConnectEnum As IEnumerator = myWebPermission.ConnectList
Console.WriteLine(ControlChars.NewLine + "The 'URIs' with 'Connect' permission are :" + ControlChars.NewLine)
While myConnectEnum.MoveNext()
  Console.WriteLine((ControlChars.Tab + myConnectEnum.Current.ToString()))
End While 

' Get all the URIs with Accept permission.      
Dim myAcceptEnum As IEnumerator = myWebPermission.AcceptList
Console.WriteLine(ControlChars.NewLine + ControlChars.NewLine + "The 'URIs' with 'Accept' permission is :" + ControlChars.NewLine)
  
While myAcceptEnum.MoveNext()
  Console.WriteLine((ControlChars.Tab + myAcceptEnum.Current))
End While
//  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
Regex myRegex = new Regex(@"http://www\.contoso\.com/.*");

// Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect,myRegex);

//Add connect privileges for a www.adventure-works.com.
myWebPermission.AddPermission(NetworkAccess.Connect,"https://www.adventure-works.com");

//Add accept privileges for www.alpineskihouse.com.
myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/");

// Check whether all callers higher in the call stack have been granted the permission.
myWebPermission.Demand();

// Get all the URIs with Connect permission.
IEnumerator myConnectEnum = myWebPermission.ConnectList;
Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
while (myConnectEnum.MoveNext())
{Console.WriteLine("\t" + myConnectEnum.Current);}
 
// Get all the URIs with Accept permission.      
IEnumerator myAcceptEnum = myWebPermission.AcceptList;
Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");
  
while (myAcceptEnum.MoveNext())
  {Console.WriteLine("\t" + myAcceptEnum.Current);}
//  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
Regex^ myRegex = gcnew Regex( "http://www\\.contoso\\.com/.*" );

// Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
WebPermission^ myWebPermission = gcnew WebPermission( NetworkAccess::Connect,myRegex );

//Add connect privileges for a www.adventure-works.com.
myWebPermission->AddPermission( NetworkAccess::Connect, "https://www.adventure-works.com" );

//Add accept privileges for www.alpineskihouse.com.
myWebPermission->AddPermission( NetworkAccess::Accept, "http://www.alpineskihouse.com/" );

// Check whether all callers higher in the call stack have been granted the permission.
myWebPermission->Demand();

// Get all the URIs with Connect permission.
IEnumerator^ myConnectEnum = myWebPermission->ConnectList;
Console::WriteLine( "\nThe 'URIs' with 'Connect' permission are :\n" );
while ( myConnectEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myConnectEnum->Current );
}

// Get all the URIs with Accept permission.   
IEnumerator^ myAcceptEnum = myWebPermission->AcceptList;
Console::WriteLine( "\n\nThe 'URIs' with 'Accept' permission is :\n" );

while ( myAcceptEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myAcceptEnum->Current );
}
// Create a Regex that accepts all URLs containing the host fragment
// www.contoso.com.
Regex myRegex = new Regex("http://www\\.contoso\\.com/.*");
// Create a WebPermission that gives permissions to all the hosts 
// containing the same host fragment.
WebPermission myWebPermission = new WebPermission(
    NetworkAccess.Connect, myRegex);
//Add connect privileges for a www.adventure-works.com.
myWebPermission.AddPermission(NetworkAccess.Connect,
    "https://www.adventure-works.com");
//Add accept privileges for www.alpineskihouse.com.
myWebPermission.AddPermission(NetworkAccess.Accept,
    "http://www.alpineskihouse.com/");
// Check whether all callers higher in the call stack have been
// granted the permission.
myWebPermission.Demand();
// Get all the URIs with Connect permission.
IEnumerator myConnectEnum = myWebPermission.get_ConnectList();
Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
while (myConnectEnum.MoveNext()) {
    Console.WriteLine("\t" + myConnectEnum.get_Current());
}
// Get all the URIs with Accept permission.      
IEnumerator myAcceptEnum = myWebPermission.get_AcceptList();
Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");

while (myAcceptEnum.MoveNext()) {
    Console.WriteLine("\t" + myAcceptEnum.get_Current());

Vererbungshierarchie

System.Object
   System.Security.CodeAccessPermission
    System.Net.WebPermission

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

WebPermission-Member
System.Net-Namespace
CodeAccessPermission
PermissionState
NetworkAccess-Enumeration