0

我有一个 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,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”类型的权限失败。
   在 System.Security.CodeAccessSecurityEngine.Check(对象需求,StackCrawlMark& stackMark,布尔 isPermSet)
   在 System.Security.CodeAccessPermission.Demand()
   在 System.IO.Directory.InternalCreateDirectory(字符串 fullPath,字符串路径,DirectorySecurity dirSecurity)
   在 System.IO.Directory.CreateDirectory(字符串路径,DirectorySecurity directorySecurity)
   在 ASP.testcreatedirectory_aspx.TestButton_Click(对象发送者,EventArgs e)
失败的动作是:
要求
第一个失败的权限类型是:
System.Security.Permissions.FileIOPermission
失败的程序集区域是:
我的电脑

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

中等信任环境不允许创建新目录(通过 Directory.Create 方法)是否正常,和/或是否有任何解决方法?

4

1 回答 1

0

只要您尝试访问的路径位于您的应用程序所在的虚拟目录下,您就应该能够在中等信任中访问它。您确定您的应用程序身份具有文件夹创建权限吗?

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


编辑:我可能读错了上面的文档。另请参阅此链接,您似乎只有读取、写入、附加和路径发现权限:(

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

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

于 2011-06-17T15:31:50.660 回答