次の方法で共有


SiteIdentityPermission クラス

コードのダウンロード元の Web サイトに対して ID アクセス許可を定義します。このクラスは継承できません。

この型のすべてのメンバの一覧については、SiteIdentityPermission メンバ を参照してください。

System.Object
   System.Security.CodeAccessPermission
      System.Security.Permissions.SiteIdentityPermission

<Serializable>
NotInheritable Public Class SiteIdentityPermission   Inherits CodeAccessPermission
[C#]
[Serializable]
public sealed class SiteIdentityPermission : CodeAccessPermission
[C++]
[Serializable]
public __gc __sealed class SiteIdentityPermission : public   CodeAccessPermission
[JScript]
public
   Serializable
class SiteIdentityPermission extends CodeAccessPermission

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

このクラスを使用すると、呼び出し元が特定の Web サイトであることを確認できます。サイト ID は、HTTP、HTTPS、および FTP のプロトコルの付いた URL からのコードだけで定義されます。URL のプロトコルの後ろの "//" から次の "/" までの間に文字列がある場合は、その文字列がサイトを表します。たとえば、URL https://www.fourthcoffee.com/process/grind.htmwww.fourthcoffee.com がサイトです。ポート番号は除外されます。URL が https://www.fourthcoffee.com:8000/ の場合、サイトは www.fourthcoffee.com:8000 ではなく www.fourthcoffee.com になります。

サイトには、完全に一致する文字列か、ドット区切り文字の前にワイルドカード ("*") を付けた文字列を指定できます。たとえば、サイト名として文字列 *.fourthcoffee.com を指定すると、fourthcoffee.com と www.fourthcoffee.com の両方と一致します。ワイルドカードを使用しない場合、正確に一致するサイト名だけが見つかります。サイト名として文字列 * を指定した場合、任意のサイトと一致しますが、サイト証拠のないコードとは一致しません。

注意    SiteIdentityPermission は、URL と IP アドレスを含め、サイトへのすべてのパスに対するアクセス許可を与えます。サイトへのアクセスを Deny によって拒否するには、そのサイトへの有効なパスをすべて Deny によって拒否する必要があります。たとえば、www.forthcoffee.com の IP アドレスが 192.168.238.241 の場合、www.forthcoffee.com へのアクセスを Deny によって拒否するには、www.forthcoffee.com、192.168.238.241 を含め、そのサイトにアクセスために使用できるすべてのパスを Deny によって拒否する必要があります。複数のパスを使用する場合は、 PermitOnlyDeny を組み合わせて使用することをお勧めします。この詳細および DenyPermitOnly を使用する場合の詳細については、「 Deny 」の Canonicalization Problems Using Deny を参照してください。

使用例

 
' This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods 
' of the SiteIdentityPermission class.
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic

<Assembly: CLSCompliant(True)> 

Public Class SiteIdentityPermissionDemo

    ' IsSubsetOf determines whether the current permission is a subset of the specified permission.
    Private Function IsSubsetOfDemo() As Boolean
        Dim returnCodeCode As Boolean = True

        Dim site1, site2 As [String]
        Dim successFlag As Boolean
        Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
            If siteIdPerm1 Is Nothing Or successFlag = False Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
                Try
                    If siteIdPerm2 Is Nothing Or successFlag = False Then
                        GoTo ContinueWhile2
                    End If
                    If siteIdPerm1.IsSubsetOf(siteIdPerm2) Then
                        Console.WriteLine((site1 & " is a subset of " & site2))
                    Else
                        Console.WriteLine((site1 & " is not a subset of " & site2))
                    End If
                Catch e As Exception
                    Console.WriteLine(("An exception was thrown : " & e.ToString()))
                    Return False
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While


        Return returnCodeCode
    End Function 'IsSubsetOfDemo

    ' Union creates a new permission that is the union of the current permission 
    ' and the specified permission.
    Private Function UnionDemo() As Boolean
        Dim returnCodeCode As Boolean = True
        Dim site1, site2 As [String]
        Dim successFlag As Boolean
        Dim siteIdPerm1, siteIdPerm2, p3 As SiteIdentityPermission

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
            If siteIdPerm1 Is Nothing Or successFlag = False Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
                If siteIdPerm2 Is Nothing Or successFlag = False Then
                    GoTo ContinueWhile2
                End If
                Dim firstSite As [String] = IIf(site1 Is Nothing, "null", site1)
                Dim secondSite As [String] = IIf(site2 Is Nothing, "null", site2)
                Try
                    p3 = CType(siteIdPerm1.Union(siteIdPerm2), SiteIdentityPermission)
                    Dim thirdSite As [String] = IIf(p3.Site Is Nothing, "null", p3.Site.ToString())

                    If Not (p3 Is Nothing) Then
                        Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = " & ControlChars.Lf & ControlChars.Tab & thirdSite & ControlChars.Lf))

                    Else
                        Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
                    End If
                Catch
                    ' Expected exception, result of the union is null.
                    Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While



        Return returnCodeCode
    End Function 'UnionDemo

    ' Intersect creates and returns a new permission that is the intersection of the 
    ' current permission and the permission specified.
    Private Function IntersectDemo() As Boolean

        Dim returnCodeCode As Boolean = True

        Dim site1, site2 As [String]
        Dim successFlag As Boolean
        Dim siteIdPerm1, siteIdPerm2, p3 As SiteIdentityPermission

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
            If siteIdPerm1 Is Nothing Or successFlag = False Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
                If siteIdPerm2 Is Nothing Or successFlag = False Then
                    GoTo ContinueWhile2
                End If
                Dim firstSite As [String] = IIf(site1 Is Nothing, "null", site1)
                Dim secondSite As [String] = IIf(site2 Is Nothing, "null", site2)
                Try
                    p3 = CType(siteIdPerm1.Intersect(siteIdPerm2), SiteIdentityPermission)
                    Dim thirdSite As [String] = IIf(p3.Site Is Nothing, "null", p3.Site.ToString())

                    If Not (p3 Is Nothing) Then
                        Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = " & thirdSite & ControlChars.Lf))

                    Else
                        Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
                    End If
                Catch
                    Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While



        Return returnCodeCode
    End Function 'IntersectDemo

    'Copy creates and returns an identical copy of the current permission.
    Private Function CopyDemo() As Boolean

        Dim returnCodeCode As Boolean = True

        Dim site1 As [String]
        Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission
        Dim successFlag As Boolean

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
            If siteIdPerm1 Is Nothing Or successFlag = False Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            Try
                siteIdPerm2 = CType(siteIdPerm1.Copy(), SiteIdentityPermission)
                If Not (siteIdPerm2 Is Nothing) Then
                    Console.WriteLine(("The copy of " & siteIdPerm2.ToString() & " succeeded." & ControlChars.Lf))
                End If

            Catch e As Exception
                Console.WriteLine(("The copy failed : " & siteIdPerm1.ToString() & e.ToString()))
                GoTo ContinueWhile1
            End Try
ContinueWhile1:
        End While
        Return returnCodeCode
    End Function 'CopyDemo

    ' ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a 
    ' permission with the specified state from the XML encoding. 
    Private Function ToFromXmlDemo() As Boolean

        Dim returnCodeCode As Boolean = True

        Dim site1 As [String]
        Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission
        Dim successFlag As Boolean

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
            If siteIdPerm1 Is Nothing Or successFlag = False Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            Try
                siteIdPerm2 = New SiteIdentityPermission(PermissionState.None.ToString())
                siteIdPerm2.FromXml(siteIdPerm1.ToXml())
                Dim result As Boolean = siteIdPerm2.Equals(siteIdPerm1)
                If siteIdPerm2.IsSubsetOf(siteIdPerm1) AndAlso siteIdPerm1.IsSubsetOf(siteIdPerm2) Then
                    Console.WriteLine(("Result of ToFromXml = " & siteIdPerm2.ToString()))
                Else
                    Console.WriteLine(siteIdPerm2.ToString())
                    Console.WriteLine(siteIdPerm1.ToString())
                End If
            Catch e As Exception
                Console.WriteLine(("ToFromXml failed. " & e.ToString()))
                GoTo ContinueWhile1
            End Try
ContinueWhile1:
        End While


        Return returnCodeCode
    End Function 'ToFromXmlDemo

    ' Invoke all demos.
    Public Function RunDemo() As Boolean

        Dim returnCode As Boolean = True
        Dim tempReturnCode As Boolean
        ' Call the IsSubsetOf demo.
        tempReturnCode = IsSubsetOfDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("The IsSubsetOf demo completed successfully.")
        Else
            Console.Out.WriteLine("subsetDemo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the Union demo.
        tempReturnCode = UnionDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("The Union demo completed successfully.")
        Else
            Console.Out.WriteLine("UnionDemo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the Intersect demo.    
        tempReturnCode = IntersectDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("The Intersect demo completed successfully.")
        Else
            Console.Out.WriteLine("IntersectDemo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode


        ' Call the Copy demo.    
        tempReturnCode = CopyDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("The Copy demo completed successfully.")
        Else
            Console.Out.WriteLine("CopyDemo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the ToFromXML demo.
        tempReturnCode = ToFromXmlDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("The ToFromXML demo completed successfully.")
        Else
            Console.Out.WriteLine("ToFromXmlDemo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        Return returnCode
    End Function 'RunDemo

    ' Test harness.
    Public Overloads Shared Sub Main(ByVal args() As [String])
        Try
            Dim testcase As New SiteIdentityPermissionDemo()
            Dim returnCode As Boolean = testcase.RunDemo()
            If returnCode Then
                Console.Out.WriteLine("The SiteIdentityPermission demo completed successfully.")
                Console.Out.WriteLine("Press the Enter key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 100
            Else
                Console.Out.WriteLine("The SiteIdentityPermission demo failed.")
                Console.Out.WriteLine("Press the Enter key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 101
            End If
        Catch e As Exception
            Console.Out.WriteLine("The SiteIdentityPermission demo failed.")
            Console.WriteLine(e.ToString())
            Console.Out.WriteLine("Press the Enter key to exit.")
            Dim consoleInput As String = Console.ReadLine()
            System.Environment.ExitCode = 101
        End Try
    End Sub 'Main
End Class 'SiteIdentityPermissionDemo


' This class generates SiteIdentityPermission objects.

Friend Class SiteGenerator

    Private siteArray As String() = {"www.northwindtraders.northwindtraders.com", "*.northwindtraders.com", "*.margiestravel.com", "northwindtraders.com", "*northwindtraders.com", ""}
    '  Replace this array with Web sites of your own choosing.

    Private siteIndex As Integer = 0


    Public Sub New()
        ResetIndex()
    End Sub 'New


    Public Sub ResetIndex()

        siteIndex = 0
    End Sub 'ResetIndex

    ' CreateSite creates a SiteIdentityPermission.
    Public Function CreateSite(ByRef sitePerm As SiteIdentityPermission, ByRef site As String, ByRef successFlag As Boolean) As Boolean

        successFlag = True
        If siteIndex >= siteArray.Length Then
            sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
            site = "null"
            Return False
        End If

        site = siteArray(siteIndex)
        siteIndex = siteIndex + 1

        Try
            sitePerm = New SiteIdentityPermission(site.ToString())
            Return True
        Catch e As ArgumentException
            Console.WriteLine(("An ArgumentException was thrown: " & e.Message.ToString()))
            successFlag = False
            If Not (site Is Nothing) AndAlso site <> "" Then
                Console.WriteLine((site & " is an invalid site."))
            ElseIf site = "" Then
                Console.WriteLine("An empty string signifies an invalid site.")
                site = "an empty string"
            Else
                sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
                Console.WriteLine(e.ToString())
                site = "null"
                Return False
            End If
            sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
            Return True
        End Try
    End Function 'CreateSite
End Class 'SiteGenerator 
' End of SiteGenerator.

[C#] 
// This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods 
// of the SiteIdentityPermission class.

using System;
using System.Security; 
using System.Security.Permissions; 

[assembly:CLSCompliant(true)]

public class SiteIdentityPermissionDemo
{
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
private bool IsSubsetOfDemo()
{
    bool returnCodeCode = true;

    String site1,site2;
    bool successFlag;
    SiteIdentityPermission siteIdPerm1,siteIdPerm2;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();

    siteGen1.ResetIndex();
    while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag)) 
    {
        if(siteIdPerm1 == null | successFlag == false) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag)) 
        {
            try
            {
                if(siteIdPerm2 == null | successFlag == false) continue;

                if(siteIdPerm1.IsSubsetOf(siteIdPerm2))
                {
                    Console.WriteLine(site1 + " is a subset of " + site2);
                } 
                else 
                {
                    Console.WriteLine(site1 + " is not a subset of " + site2);

                } 
            }
            catch (Exception e)
            {
                Console.WriteLine ( "An exception was thrown : " + e);
                return false;
            }
        
        }
    }


    return returnCodeCode;

}
// Union creates a new permission that is the union of the current permission 
// and the specified permission.
private bool UnionDemo()
{
    bool returnCodeCode = true;
    String site1,site2;
    bool successFlag;
    SiteIdentityPermission siteIdPerm1,siteIdPerm2,p3;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();

    siteGen1.ResetIndex();
    while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag)) 
    {
        if(siteIdPerm1 == null | successFlag == false) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag)) {
        if(siteIdPerm2 == null | successFlag == false) continue;
            String firstSite = site1 == null ? "null" : site1;
            String secondSite = site2 == null ? "null" : site2;
            try
            {
                p3 = (SiteIdentityPermission)siteIdPerm1.Union(siteIdPerm2);
                String thirdSite = p3.Site == null ? "null" : p3.Site;

                if(p3 != null)  
                {
                    Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = \n\t" 
                        + thirdSite + "\n");

                } 
                else 
                {
                    Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = null.\n");
                }
            }
            catch 
            {
                // Expected exception, result of the union is null.
                Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = null.\n");

            }


        }
    }


    return returnCodeCode;

}
// Intersect creates and returns a new permission that is the intersection of the 
// current permission and the permission specified.
private bool IntersectDemo()
{

    bool returnCodeCode = true;

    String site1,site2;
    bool successFlag;
    SiteIdentityPermission siteIdPerm1,siteIdPerm2,p3;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();

    siteGen1.ResetIndex();
    while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag)) 
    {
        if(siteIdPerm1 == null | successFlag == false) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag)) 
        {
            if(siteIdPerm2 == null | successFlag == false) continue;
            String firstSite = site1 == null ? "null" : site1;
            String secondSite = site2 == null ? "null" : site2;
            try
            {
                p3 = (SiteIdentityPermission)siteIdPerm1.Intersect(siteIdPerm2);
                String thirdSite = p3.Site == null ? "null" : p3.Site;

                if(p3 != null)  
                {
                    Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = " + thirdSite + "\n");

                } 
                else 
                {
                    Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = null.\n");
                }
            }
            catch 
            {
                Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = null.\n");

            }


        }
    }


    return returnCodeCode;

}
//Copy creates and returns an identical copy of the current permission.
private bool CopyDemo()
{

    bool returnCodeCode = true;

    String site1;
    SiteIdentityPermission siteIdPerm1,siteIdPerm2;
    bool successFlag;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();

    siteGen1.ResetIndex();
    while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag)) 
    {
        if(siteIdPerm1 == null | successFlag == false) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        try{            
            siteIdPerm2 = (SiteIdentityPermission)siteIdPerm1.Copy();
            if (siteIdPerm2 != null )
            {
                Console.WriteLine("The copy of " + siteIdPerm2.ToString() + " succeeded.\n");
            }

        }
        catch(Exception e) 
        {
            Console.WriteLine("The copy failed : " + siteIdPerm1.ToString() + e);
            continue;
        }
    }
    return returnCodeCode;

}
// ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a 
// permission with the specified state from the XML encoding. 
private bool ToFromXmlDemo()
{

    bool returnCodeCode = true;

    String site1;
    SiteIdentityPermission siteIdPerm1,siteIdPerm2;
    bool successFlag;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();
    
    siteGen1.ResetIndex();
    while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag)) 
    {
        if(siteIdPerm1 == null | successFlag == false) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        try
        {            
            siteIdPerm2= new SiteIdentityPermission(PermissionState.None);
            siteIdPerm2.FromXml(siteIdPerm1.ToXml());
            bool result = siteIdPerm2.Equals(siteIdPerm1);
            if (siteIdPerm2.IsSubsetOf(siteIdPerm1)  && siteIdPerm1.IsSubsetOf(siteIdPerm2))
            {
                Console.WriteLine("Result of ToFromXml = " + siteIdPerm2.ToString());
            }
            else
            {
                Console.WriteLine(siteIdPerm2.ToString());
                Console.WriteLine(siteIdPerm1.ToString());
            }
        }
        catch(Exception e) {
            Console.WriteLine("ToFromXml failed. " + e);
            continue;
        }

    }


    return returnCodeCode;

}
// Invoke all demos.
public bool RunDemo()
    {

    bool returnCode=true;
    bool tempReturnCode;
// Call the IsSubsetOf demo.
    if(tempReturnCode= IsSubsetOfDemo())Console.Out.WriteLine("The IsSubsetOf demo completed successfully.");
    else Console.Out.WriteLine("subsetDemo failed.");
    returnCode=tempReturnCode && returnCode;
    
// Call the Union demo.
    if(tempReturnCode= UnionDemo())Console.Out.WriteLine("The Union demo completed successfully.");
    else Console.Out.WriteLine("UnionDemo failed.");
    returnCode=tempReturnCode && returnCode;

// Call the Intersect demo.    
    if(tempReturnCode= IntersectDemo())Console.Out.WriteLine("The Intersect demo completed successfully.");
    else Console.Out.WriteLine("IntersectDemo failed.");
    returnCode=tempReturnCode && returnCode;


// Call the Copy demo.    
    if(tempReturnCode= CopyDemo())Console.Out.WriteLine("The Copy demo completed successfully.");
    else Console.Out.WriteLine("CopyDemo failed.");
    returnCode=tempReturnCode && returnCode;
        
// Call the ToFromXML demo.    
    if(tempReturnCode= ToFromXmlDemo())Console.Out.WriteLine("The ToFromXML demo completed successfully.");
    else Console.Out.WriteLine("ToFromXmlDemo failed.");
    returnCode=tempReturnCode && returnCode;

    return (  returnCode );    

    }
// Test harness.
 public static void Main(String[] args) 
    {
        try
        {
            SiteIdentityPermissionDemo testcase = new SiteIdentityPermissionDemo();
            bool returnCode = testcase.RunDemo();
            if (returnCode)
            {
                Console.Out.WriteLine("The SiteIdentityPermission demo completed successfully.");
                Console.Out.WriteLine("Press the Enter key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 100;
            }
            else
            {
                Console.Out.WriteLine("The SiteIdentityPermission demo failed.");
                Console.Out.WriteLine("Press the Enter key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 101;
            }
        }
        catch(Exception e)
        {
            Console.Out.WriteLine("The SiteIdentityPermission demo failed.");
            Console.WriteLine(e.ToString());
            Console.Out.WriteLine("Press the Enter key to exit.");
            string consoleInput = Console.ReadLine();
            System.Environment.ExitCode = 101;
        }
    }
}


// This class generates SiteIdentityPermission objects.
 
internal  class SiteGenerator
{

private string[] siteArray = 
//  Replace this array with Web sites of your own choosing.
{"www.northwindtraders.northwindtraders.com",
"*.northwindtraders.com",
"*.margiestravel.com","northwindtraders.com",
"*northwindtraders.com",""};

private int siteIndex = 0;

public SiteGenerator()
{
    ResetIndex();
}

public void ResetIndex()
{

    siteIndex = 0;

}
// CreateSite creates a SiteIdentityPermission.
public bool CreateSite(out SiteIdentityPermission sitePerm, out string site, out bool successFlag)
{

    successFlag = true;
    if(siteIndex >= siteArray.Length) 
    {
        sitePerm = new SiteIdentityPermission(PermissionState.None);
        site="null";
        return false;

    }

    site = siteArray[siteIndex++];

    try
    {
        sitePerm = new SiteIdentityPermission(site);
        return true;
    } 
    catch(ArgumentException e)
    {
        Console.WriteLine("An ArgumentException was thrown: " + e.Message);
        successFlag = false;
        if (site != null && site != "")
        {
            Console.WriteLine(site + " is an invalid site.");
        }
        else if (site == "")
        {
            Console.WriteLine("An empty string signifies an invalid site.");
            site = "an empty string";
        }
        else
        {
            sitePerm = new SiteIdentityPermission(PermissionState.None);
            Console.WriteLine(e);
            site = "null";
            return false;
        }
        sitePerm = new SiteIdentityPermission(PermissionState.None);
        return true;
    }
    }

} // End of SiteGenerator.


[C++] 
// This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods
// of the SiteIdentityPermission class.

#using <mscorlib.dll>

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;

[assembly:CLSCompliant(true)];

// This class generates SiteIdentityPermission objects.

private __gc class SiteGenerator {

private:
   String* siteArray[];
   int  siteIndex;

public:
   SiteGenerator() {
      //  Replace this array with Web sites of your own choosing.
      String* temp[] = {S"www.northwindtraders.northwindtraders.com",
         S"*.northwindtraders.com",
         S"*.margiestravel.com", S"northwindtraders.com",
         S"*northwindtraders.com", S""};
      siteArray = temp;
      ResetIndex();
   }

   void ResetIndex() {
      siteIndex = 0;
   }
   // CreateSite creates a SiteIdentityPermission.
   bool CreateSite(
      [Out] SiteIdentityPermission** sitePerm,
      [Out] String** site,
      [Out] bool* successFlag) {

      *successFlag = true;
      if (siteIndex >= siteArray->Length) {
         *sitePerm = new SiteIdentityPermission(PermissionState::None);
         *site=S"null";
         return false;
      }

      *site = siteArray[siteIndex++];

      try {
         *sitePerm = new SiteIdentityPermission(*site);
         return true;
      } catch (ArgumentException* e) {
         Console::WriteLine(S"An ArgumentException was thrown: {0}", e->Message);
         *successFlag = false;
         if (*site != 0 && !(*site)->Equals(S"")) {
            Console::WriteLine(S"{0} is an invalid site.", *site);
         } else if ((*site)->Equals(S"")) {
            Console::WriteLine(S"An empty string signifies an invalid site.");
            *site = S"an empty string";
         } else {
            *sitePerm = new SiteIdentityPermission(PermissionState::None);
            Console::WriteLine(e);
            *site = S"null";
            return false;
         }
         *sitePerm = new SiteIdentityPermission(PermissionState::None);
         return true;
      }
   }

}; // End of SiteGenerator.

public __gc class SiteIdentityPermissionDemo {
   // IsSubsetOf determines whether the current permission is a subset of the specified permission.
   bool IsSubsetOfDemo() {
      bool returnCodeCode = true;

      String* site1, *site2;
      bool successFlag;
      SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;

      SiteGenerator* siteGen1 = new SiteGenerator();
      SiteGenerator* siteGen2 = new SiteGenerator();

      siteGen1->ResetIndex();
      while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
         if (siteIdPerm1 == 0 || successFlag == false) continue;
         siteGen2->ResetIndex();
         Console::WriteLine(S"**************************************************************************");
         while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
            try {
               if (siteIdPerm2 == 0 || successFlag == false) continue;

               if (siteIdPerm1->IsSubsetOf(siteIdPerm2)) {
                  Console::WriteLine(S"{0} is a subset of {1}", site1, site2);
               } else {
                  Console::WriteLine(S"{0} is not a subset of {1}", site1, site2);

               }
            } catch (Exception* e) {
               Console::WriteLine (S"An exception was thrown : {0}", e);
               return false;
            }
         }
      }
      return returnCodeCode;
   }
   // Union creates a new permission that is the union of the current permission
   // and the specified permission.
   bool UnionDemo() {
      bool returnCodeCode = true;
      String* site1, *site2;
      bool successFlag;
      SiteIdentityPermission* siteIdPerm1, *siteIdPerm2, *p3;

      SiteGenerator* siteGen1 = new SiteGenerator();
      SiteGenerator* siteGen2 = new SiteGenerator();

      siteGen1->ResetIndex();
      while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
         if (siteIdPerm1 == 0 || successFlag == false) continue;
         siteGen2->ResetIndex();
         Console::WriteLine(S"**************************************************************************");
         while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
            if (siteIdPerm2 == 0 || successFlag == false) continue;
            String*  firstSite = site1 == 0 ? S"null" : site1;
            String*  secondSite = site2 == 0 ? S"null" : site2;
            try {
               p3 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Union(siteIdPerm2));
               String*  thirdSite = p3->Site == 0 ? S"null" : p3->Site;

               if (p3 != 0) {
                  Console::WriteLine(S"The union of {0} and \n\t{1} = \n\t{2}\n",
                     firstSite, secondSite, thirdSite);
               } else {
                  Console::WriteLine(S"The union of {0} and \n\t{1} = null.\n", firstSite, secondSite);
               }
            } catch (Exception*) {
               // Expected exception, result of the union is 0.
               Console::WriteLine(S"The union of {0} and \n\t{1} = null.\n", firstSite, secondSite);
            }
         }
      }

      return returnCodeCode;

   }
   // Intersect creates and returns a new permission that is the intersection of the
   // current permission and the permission specified.
   bool IntersectDemo() {

      bool returnCodeCode = true;

      String* site1, *site2;
      bool successFlag;
      SiteIdentityPermission *siteIdPerm1, *siteIdPerm2, *p3;

      SiteGenerator* siteGen1 = new SiteGenerator();
      SiteGenerator* siteGen2 = new SiteGenerator();

      siteGen1->ResetIndex();
      while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
         if (siteIdPerm1 == 0 || successFlag == false) continue;
         siteGen2->ResetIndex();
         Console::WriteLine(S"**************************************************************************");
         while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
            if (siteIdPerm2 == 0 || successFlag == false) continue;
            String*  firstSite = site1 == 0 ? S"0" : site1;
            String*  secondSite = site2 == 0 ? S"0" : site2;
            try {
               p3 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Intersect(siteIdPerm2));
               String*  thirdSite = p3->Site == 0 ? S"0" : p3->Site;

               if (p3 != 0) {
                  Console::WriteLine(S"The intersection of {0} and \n\t{1} = {2}\n",
                     firstSite, secondSite, thirdSite);
               } else {
                  Console::WriteLine(S"The intersection of {0} and \n\t{1} = null.\n", firstSite, secondSite);
               }
            } catch (Exception*) {
               Console::WriteLine(S"The intersection of {0} and \n\t{1} = null.\n", firstSite, secondSite);
            }
         }
      }
      return returnCodeCode;
   }
   //Copy creates and returns an identical copy of the current permission.
   bool CopyDemo() {

      bool returnCodeCode = true;

      String* site1;
      SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;
      bool successFlag;

      SiteGenerator* siteGen1 = new SiteGenerator();
      SiteGenerator* siteGen2 = new SiteGenerator();

      siteGen1->ResetIndex();
      while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
         if (siteIdPerm1 == 0 || successFlag == false) continue;
         siteGen2->ResetIndex();
         Console::WriteLine(S"**************************************************************************");
         try {
            siteIdPerm2 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Copy());
            if (siteIdPerm2 != 0) {
               Console::WriteLine(S"The copy of {0} succeeded.\n", siteIdPerm2);
            }

         } catch (Exception* e) {
            Console::WriteLine(S"The copy failed : {0}{1}", siteIdPerm1, e);
            continue;
         }
      }
      return returnCodeCode;

   }
   // ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
   // permission with the specified state from the XML encoding.
   bool ToFromXmlDemo() {

      bool returnCodeCode = true;

      String* site1;
      SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;
      bool successFlag;

      SiteGenerator* siteGen1 = new SiteGenerator();
      SiteGenerator* siteGen2 = new SiteGenerator();

      siteGen1->ResetIndex();
      while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
         if (siteIdPerm1 == 0 || successFlag == false) continue;
         siteGen2->ResetIndex();
         Console::WriteLine(S"**************************************************************************");
         try {
            siteIdPerm2 = new SiteIdentityPermission(PermissionState::None);
            siteIdPerm2->FromXml(siteIdPerm1->ToXml());
            bool result = siteIdPerm2->Equals(siteIdPerm1);
            if (siteIdPerm2->IsSubsetOf(siteIdPerm1)  && siteIdPerm1->IsSubsetOf(siteIdPerm2)) {
               Console::WriteLine(S"Result of ToFromXml = {0}", siteIdPerm2);
            } else {
               Console::WriteLine(siteIdPerm2);
               Console::WriteLine(siteIdPerm1);
            }
         } catch (Exception* e) {
            Console::WriteLine(S"ToFromXml failed. {0}", e);
            continue;
         }

      }
      return returnCodeCode;
   }
   // Invoke all demos.
public:
   bool RunDemo() {

      bool returnCode=true;
      bool tempReturnCode;
      // Call the IsSubsetOf demo.
      if (tempReturnCode= IsSubsetOfDemo())Console::WriteLine(S"The IsSubsetOf demo completed successfully.");
      else Console::WriteLine(S"subsetDemo failed.");
      returnCode=tempReturnCode && returnCode;

      // Call the Union demo.
      if (tempReturnCode= UnionDemo())Console::WriteLine(S"The Union demo completed successfully.");
      else Console::WriteLine(S"UnionDemo failed.");
      returnCode=tempReturnCode && returnCode;

      // Call the Intersect demo.
      if (tempReturnCode= IntersectDemo())Console::WriteLine(S"The Intersect demo completed successfully.");
      else Console::WriteLine(S"IntersectDemo failed.");
      returnCode=tempReturnCode && returnCode;


      // Call the Copy demo.
      if (tempReturnCode= CopyDemo())Console::WriteLine(S"The Copy demo completed successfully.");
      else Console::WriteLine(S"CopyDemo failed.");
      returnCode=tempReturnCode && returnCode;

      // Call the ToFromXML demo.
      if (tempReturnCode= ToFromXmlDemo())Console::WriteLine(S"The ToFromXML demo completed successfully.");
      else Console::WriteLine(S"ToFromXmlDemo failed.");
      returnCode=tempReturnCode && returnCode;

      return (returnCode);

   }
};

// Test harness.
int main() {
   try {
      SiteIdentityPermissionDemo* testcase = new SiteIdentityPermissionDemo();
      bool returnCode = testcase->RunDemo();
      if (returnCode) {
         Console::WriteLine(S"The SiteIdentityPermission demo completed successfully.");
         Console::WriteLine(S"Press the Enter key to exit.");
         Console::ReadLine();
         System::Environment::ExitCode = 100;
      } else {
         Console::WriteLine(S"The SiteIdentityPermission demo failed.");
         Console::WriteLine(S"Press the Enter key to exit.");
         Console::ReadLine();
         System::Environment::ExitCode = 101;
      }
   } catch (Exception* e) {
      Console::WriteLine(S"The SiteIdentityPermission demo failed.");
      Console::WriteLine(e);
      Console::WriteLine(S"Press the Enter key to exit.");
      Console::ReadLine();
      System::Environment::ExitCode = 101;
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Security.Permissions

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

SiteIdentityPermission メンバ | System.Security.Permissions 名前空間 | アクセス許可 | アクセス許可の要求 | SiteIdentityPermissionAttribute | Site | SiteMembershipCondition