使用DotNetZip的asp.net安全异常''System.Security.Permissions.FileIOPermission'

时间:2014-04-29 21:15:52

标签: asp.net vb.net security web-config dotnetzip

我已将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

2 个答案:

答案 0 :(得分:0)

您需要检查该文件夹上的所有iis用户和权限。 要做到这一点rdp你的服务器访问iis选择站点浏览目录。找到需要权限的目录,选择它点击它右边clik =&gt; properties =&gt;安全选项卡。 检查您的用户并检查它们是否具有正确的权限。如果没有更新权限,请在安全选项卡中进行编辑,并为您需要有权执行此操作的用户更新权限。点击保存/确定我不要记住然后再试一次。它应该解决你的问题。

答案 1 :(得分:0)

如果有人读过这个并且遇到同样的问题,我会切换到另一个包,SharpZipLib包可用here。似乎没有安全问题。