WebPermission クラス
HTTP インターネット リソースへのアクセス権を制御します。
この型のすべてのメンバの一覧については、WebPermission メンバ を参照してください。
System.Object
System.Security.CodeAccessPermission
System.Net.WebPermission
<Serializable>
NotInheritable Public Class WebPermission Inherits CodeAccessPermission Implements IUnrestrictedPermission
[C#]
[Serializable]
public sealed class WebPermission : CodeAccessPermission, IUnrestrictedPermission
[C++]
[Serializable]
public __gc __sealed class WebPermission : public CodeAccessPermission, IUnrestrictedPermission
[JScript]
public
Serializable
class WebPermission extends CodeAccessPermission implements IUnrestrictedPermission
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
WebPermission は、インターネット リソースへのアクセスを制御するためのメソッドとプロパティのセットを提供します。 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 は、 AcceptList に一致している URI の指定するクラスへの接続を許可します。
注意 インターネット リソースへのアクセスを Deny (拒否) するには、そのリソースへのパスのアクセスをすべて Deny にする必要があります。特定のリソースにだけアクセスできるようにすることをお勧めします。詳細については、 Deny のトピックを参照してください。
メモ 必要なのは、リソース標準パス使用してアクセスを Deny (拒否) することだけです。すべてのパスの構文を使用する必要はありません。
使用例
[Visual Basic, C#, C++] 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, "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
[C#]
// 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);}
[C++]
// Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
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 www.adventure-works.com.
myWebPermission->AddPermission(NetworkAccess::Connect,S"https://www.adventure-works.com");
//Add accept privileges for www.alpineskihouse.com.
myWebPermission->AddPermission(NetworkAccess::Accept, S"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(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);}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Net
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System (System.dll 内)
参照
WebPermission メンバ | System.Net 名前空間 | CodeAccessPermission | PermissionState | NetworkAccess