我有一个ASP.NET Web应用程序,它运行在具有共享托管提供程序的中等信任环境中。以下代码导致引发SecurityException:
private void TestButton_Click(object sender, EventArgs e)
{
string directory = Server.MapPath("~/MyFolder/") + "_TestDirectory";
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory);
}
错误的全文是:
System.Security.SecurityException:请求类型为"System.Security.Permissions.FileIOPermission,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"的权限失败。位于System.Security.CodeAccessSecurityEngine.Check(对象需求,StackCrawlMark和stackMark,布尔值isPermSet)位于System.Security.CodeAccessPermission.Demand()位于System.IO.Directory.InteralCreateDirectory(字符串完整路径,字符串路径,DirectorySecurity dirSecurity)位于System.IO.Directory.CreateDirectory(字符串路径,DirectorySecurity DirectorySecurity)位于ASP.testcreatedirectory_aspx.TestButton_Click(对象发件人,EventArgs e)失败的操作是:需要失败的第一个权限的类型为:System.Security.Permissions.FileIOPermission失败的程序集的区域为:我的电脑
创建子文件夹的文件夹具有完全权限,所以我认为这不是问题所在。这似乎与在中等信任环境中运行有关。
中等信任环境不允许创建新目录(通过Directory.Create方法)是正常的吗?和/或有什么解决方法吗?
只要您尝试访问的路径在应用程序所在的虚拟目录下,您就应该能够在Medium Trust中访问它。您确定您的应用程序标识具有文件夹创建权限吗?
http://msdn.microsoft.com/en-us/library/aa302425#c09618429_015
编辑:我可能读错了上面的文档。请同时查看此链接,您似乎只有读取、写入、附加和PathDiscovery权限:(
FileIOPermission受到限制。这意味着您只能访问中的文件应用程序的虚拟目录等级制度您的申请获得批准读取、写入、附加和PathDiscovery您的应用程序的权限虚拟目录层次结构。
http://msdn.microsoft.com/en-us/library/ff648344.aspx