This documentation is archived and is not being maintained.

WebPermission Class

Controls rights to access HTTP Internet resources.

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

<SerializableAttribute> _
Public NotInheritable Class WebPermission _
	Inherits CodeAccessPermission _
	Implements IUnrestrictedPermission
Dim instance As WebPermission

WebPermission provides a set of methods and properties to control access to Internet resources. You can use a WebPermission to provide either restricted or unrestricted access to your resource, based on the PermissionState that is set when the WebPermission is created.

Create a WebPermission instance by calling its constructor using one of the following sets of parameters:

The ConnectList and AcceptList hold the URIs to which you have granted access permission. To add a URI to either of these lists, use AddPermission. If you pass Accept as the NetworkAccess parameter, the URI will be added to the AcceptList. WebPermission will allow connections to your target class with URIs matching the AcceptList.

Caution noteCaution:

To Deny access to an Internet resource, you must Deny access to all the possible paths to that resource. A better approach is to allow access to the specific resource only. For more information about this subject, refer to the Using the Deny Method topic.


You need to Deny access using only the resource canonical path. There is no need to use all the path's syntactical variations.


User name and default port information is stripped from the Uri before the comparison with the regular expression argument that is supplied to the WebPermission(NetworkAccess, Regex) constructor. If the regular expression contains user information or the default port number, then all incoming Uris will fail to match the regular expression.

The following example demonstrates how to create a new instance of WebPermission using a Regex. Additional hosts are added to the connect and accept list of WebPermission. Finally, the connect and accept list are displayed to the console.

' Create a Regex that accepts all the URLs contianing the host fragment 
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
myWebPermission.AddPermission(NetworkAccess.Connect, "")
' Add accept privileges for
myWebPermission.AddPermission(NetworkAccess.Accept, "")
' Check whether all callers higher in the call stack have been granted the permission.

' 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
Regex* myRegex = new Regex(S"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

//Add accept privileges for
myWebPermission->AddPermission(NetworkAccess::Accept, S"");

// Check whether all callers higher in the call stack have been granted the permission.

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

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

while (myAcceptEnum->MoveNext())
  {Console::WriteLine(S"\t{0}", myAcceptEnum->Current);}

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

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

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0