<SerializableAttribute> _ Public NotInheritable Class WebPermission Inherits CodeAccessPermission Implements IUnrestrictedPermission
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
WebPermission 提供一组方法和属性来控制对 Internet 资源的访问。您可以根据创建 WebPermission 时设置的 PermissionState 使用 WebPermission 提供对资源的受限制和无限制的访问。
使用以下一组参数集通过调用其构造函数创建 WebPermission 实例:
无参数。默认的 PermissionState 为 None。
PermissionState。指定 Unrestricted 允许在目标类中使用任何 URI,或指定 None 只允许访问通过使用 AddPermission 方法指定的 URI。
一个 NetworkAccess 值和一个 URI 字符串。指定的 URI 具有 NetworkAccess 值授予的权限。
一个 NetworkAccess 说明符和 URI 正则表达式。
ConnectList 和 AcceptList 保存有已对其授予访问权限的 URI。若要向两个列表中的任何一个添加 URI,请使用 AddPermission。如果将 Accept 作为 NetworkAccess 参数传递,则 URI 将被添加到 AcceptList。WebPermission 将允许到 URI 与 AcceptList 匹配的目标类的连接。
若要 Deny 访问 Internet 资源,您必须 Deny 访问该资源的所有可能的路径。更好的方法是仅允许访问特定资源。有关该主题的更多信息,请参见 使用 Deny 方法 主题。
您仅需要使用资源的规范路径 Deny 访问。没有必要使用路径的所有语法变化形式。
在与提供给 WebPermission(NetworkAccess,Regex) 构造函数的正则表达式参数进行比较之前,用户名和默认端口信息从 Uri 中剥离。如果正则表达式包含用户信息或默认端口号,则所有传入的 Uri 将无法匹配该正则表达式。
下面的示例演示如何使用 Regex 创建 WebPermission 的新实例。将其他主机添加到 WebPermission 的“连接”和“接受”列表。最后,将“连接”和“接受”列表显示到控制台。
' 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, "http://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,"http://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, "http://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, "http://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());
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 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。