在中等信任环境中创建目录?

时间:2011-06-17 15:11:59

标签: asp.net medium-trust securityexception create-directory

我在一个具有共享托管服务提供商的中等信任环境中运行的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: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity)
   at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity)
   at ASP.testcreatedirectory_aspx.TestButton_Click(Object sender, EventArgs e)
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.Permissions.FileIOPermission
The Zone of the assembly that failed was:
MyComputer

创建子文件夹的文件夹具有完全权限,因此我不认为这是问题所在。这看起来与在中等信任环境中运行有关。

中等信任环境禁止创建新目录(通过Directory.Create方法)和/或是否有解决方法是正常的?

1 个答案:

答案 0 :(得分:0)

只要您尝试访问的路径位于应用程序所在的虚拟目录下,您就应该能够在Medium Trust中访问它。您确定您的应用程序标识是否具有文件夹创建权限?

http://msdn.microsoft.com/en-us/library/aa302425#c09618429_015


编辑:我可能已经读过上面的文档了。也可以看到这个链接,看起来你只有Read,Write,Append和PathDiscovery权限:(

  

FileIOPermission受到限制。这个   意味着你只能访问文件   应用程序的虚拟目录   层次结构。您的申请被授予   读,写,追加和路径发现   您的应用程序的权限   虚拟目录层次结构。

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