程序集声明性安全性 - 请求可选

时间:2010-11-26 19:01:03

标签: c# .net security

我正在尝试将CAS权限限制为一个特定域。我在程序集级别使用属性语法执行此操作。这个程序集在本地计算机上运行,​​因此操作系统正在给予程序集完全信任,但我希望以下内容能够轰炸。

为什么连接到谷歌时不会抛出异常?这是一个例子:

  [assembly: WebPermission(SecurityAction.RequestOptional, ConnectPattern = @"http://msdn\.microsoft\.com/.*")]
class Program
{
    private static WebClient client = new WebClient();

    static void Main(string[] args)
    {
        try
        {
            PermissionSet permSet = new PermissionSet(PermissionState.None);
            permSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Write, Environment.CurrentDirectory));
            permSet.Demand();

            //client.DownloadFile(@"http://msdn.microsoft.com/en-us/library/ms247123(VS.80).aspx", @"ms247123(VS.80).aspx");
            client.DownloadFile(@"http://www.google.com", @"goole.htm");
        }

        catch
        {
            Console.WriteLine("Insuffcient Privaleges");
        }


    }
}

注意程序集CAS声明。我试图将WebPermissions限制为仅匹配此模式的域http://msdn。microsoft.com /.*

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您使用的是什么框架版本? Framework 4.0不再在程序集级别强制执行声明式安全性。

http://msdn.microsoft.com/en-us/library/ee191568.aspx