波斯马BOSSMA Information Technology

ASP.NET “System.Security.SecurityException”异常的解决办法

发布时间:2014年2月25日 / 分类:ASP.NET / 23,397 次浏览 / 评论

在IIS7上创建了一个网站,浏览后提示异常:

说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。

异常详细信息: System.Security.SecurityException: 请求“System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。

同样的代码之前同样部署的时候就没有出现这个问题,可谓莫名其妙。

经查为代码访问安全性的问题,折腾一番,重建网站,重新设置目录权限,重启应用程序池后,仍旧提示SecurityException,只不过可能请求的程序集换了一个。

网上关于这个问题的解决方案主要有两个:

1、修改根目录下的web.config,信任级别设置为Full :

<system.web>
    <trust level="Full" originUrl="" />
</system.web>

又或者:进入命令提示窗口执行以下命令,

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on

根据.net framework的版本不同,需要进入不同的目录。

关于“信任级别”大体是说不同级别可以操作的权限不同,具体点击这里详细了解。这个解决方案听起来说的过去。

2、修改应用程序池配置,修改“加载用户配置文件”为true。

load-user-profile

 

这个设置对图中的“标识”设置项选择的帐户产生影响,对默认的一些机制产生影响。有些解决方案是修改“标识”,作用类似,也可以试试。

“标识”选择”ApplicationPoolIdentity”时会自动创建一个和网站应用程序池同名的虚拟账户,用于对相关资源的访问。如果想了解的更多可以参考:

http://www.cnblogs.com/beginor/archive/2012/03/26/2418403.html

http://www.cnblogs.com/yjmyzz/archive/2009/10/26/1590033.html

不过我遇到的问题是同样的程序和配置,一个可以,另一个不可以,为什么要修改配置呢。还是网上找到的一个解决方案:

http://blog.nicholasrogoff.com/2010/09/01/how-to-bulk-unblock-files-in-windows-7-or-server-2008/

http://zacksz.com/notes/19-windows/177-how-to-bulk-unblock-files-in-windows-7-or-server-2008

大体是说在Windows 7或Windows 2008上文件复制后不被信任,文件被锁定了,需要解除锁定,如果你不想修改配置试试,可以用这种方案。

中文版使用说明如下:

1、到这里下载Streams.exe:?http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx

2、解压streams.exe到有问题的文件所处文件夹的上级目录,通过命令提示符(需要管理员权限)进入这个目录。

3、执行命令:streams –s –d subfoldername,subfoldername是有问题的文件夹。

 

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《ASP.NET “System.Security.SecurityException”异常的解决办法

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有1 条评论

发表评论