【发布时间】:2014-06-16 00:38:26
【问题描述】:
我已将 DotNetZip dll 集成到 ASP.net/VB 项目中。但是当我尝试打开一个文件进行阅读时,我得到了一个安全异常:
System.Security.SecurityException: Request for the permission of type
'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
我查看了很多地方来寻求有关此错误的帮助(包括此站点上的几个),但似乎没有任何效果。我得到的印象是我需要设置我的应用程序的信任级别。当我的应用程序完成后,它需要存在于我的客户端服务器上,在那里我无法访问他们的 IIS 配置。我咨询过的一些网站说要在我的 web.config 文件中执行此操作。从 MSDN 和其他地方,我尝试了以下变化:
<system.web>
<trust level="Full" />
</system.web>
不好。我将目标 zip 文件放在 app 目录中以简化操作,并检查我对该目录是否具有完全权限。还是不行。
谁能告诉我如何正确设置我的应用的信任级别,或者我是否需要做其他事情?如果有人感兴趣,这是堆栈跟踪。谢谢。
[SecurityException: Request for the permission of type
'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b77a5c561934e089' failed.]
System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark&
stackMark, Boolean isPermSet) +0
System.Security.CodeAccessPermission.Demand() +61
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights,
Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options,
SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +644
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare
share) +66
Ionic.Zip.ZipFile.get_ReadStream() +75
Ionic.Zip.ZipFile.ReadIntoInstance(ZipFile zf) +46
Ionic.Zip.ZipFile.Read(String fileName, TextWriter statusMessageWriter, Encoding
Ionic.Zip.ZipFile.Read(String fileName) +11
CodeBehind.Page_Load(Object sender, EventArgs e) in W:\research\httpdoc\uploader
\index.aspx.vb:45
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) +6785
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) +242
System.Web.UI.Page.ProcessRequest() +80
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
System.Web.UI.Page.ProcessRequest(HttpContext context) +49
ASP.index_aspx.ProcessRequest(HttpContext context) +37
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +75
【问题讨论】:
-
抛出此异常时,您的应用程序尝试从哪里读取文件?即:
uploader \index.aspx.vb中的Page_Load方法传递给ZipFile.Read的文件路径是什么? -
@Nicole Calinoiu,感谢您的回复。我尝试将文件放在几个不同的位置,包括我的应用程序文件(aspx 文件)所在的同一目录。我想我肯定有权从那里阅读它。如果我让它工作,我的用户将需要打开位于他们本地计算机上的 zip 文件。
标签: asp.net vb.net security web-config dotnetzip