我在一个具有共享托管服务提供商的中等信任环境中运行的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方法)和/或是否有解决方法是正常的?
答案 0 :(得分:0)
只要您尝试访问的路径位于应用程序所在的虚拟目录下,您就应该能够在Medium Trust中访问它。您确定您的应用程序标识是否具有文件夹创建权限?
http://msdn.microsoft.com/en-us/library/aa302425#c09618429_015
编辑:我可能已经读过上面的文档了。也可以看到这个链接,看起来你只有Read,Write,Append和PathDiscovery权限:(
FileIOPermission受到限制。这个 意味着你只能访问文件 应用程序的虚拟目录 层次结构。您的申请被授予 读,写,追加和路径发现 您的应用程序的权限 虚拟目录层次结构。