我正在尝试将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 /.*
我做错了什么?
谢谢!
答案 0 :(得分:1)
您使用的是什么框架版本? Framework 4.0不再在程序集级别强制执行声明式安全性。