在Goddaddy使用ManagedFusion Rewriter时遇到System.Web.AspNetHostingPermission安全异常

27
我想知道是否有人能够帮助我解决在Godaddy上运行我的网站时遇到的问题。 我尝试使用ManagedFusion Rewriter(http://www.codeplex.com/urlrewriter/)来实现无扩展名的URL重写,但是我遇到以下错误:

'/'应用程序中的服务器错误。 安全性异常说明:应用程序试图执行安全策略不允许的操作。 要授予此应用程序所需的权限,请联系系统管理员或更改配置文件中的应用程序信任级别。

异常详细信息:System.Security.SecurityException:请求类型为'system.web.AspNetHostingPermission、system、version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089'的权限失败。

源代码错误:

当前Web请求的执行期间生成了一个未处理的异常。 可以使用下面的异常堆栈跟踪标识异常的来源和位置。

堆栈跟踪:

[SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, 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() +59
System.Web.Hosting.HostingEnvironment.get_ApplicationID() +61
IIS7Injector.TraceManager.TraceEvent(TraceEventType eventType, String message) +62
IIS7Injector.ConfigManager.IsSkippedUrl(HttpRequest request, String ContentType) +38
IIS7Injector.InjectedContentStream.Write(Byte[] buffer, Int32 offset, Int32 count) +153
ManagedFusion.Rewriter.FormActionFilter.Write(Byte[] buffer, Int32 offset, Int32 count) +485
System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr) +265
System.Web.HttpResponse.FilterOutput() +80
       System.Web.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +54
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

版本信息:Microsoft .NET Framework版本:2.0.50727.1434; ASP.NET版本:2.0.50727.1434

我正在使用IIS 7以集成模式运行。 我按照此处的自述文件中的说明修改了我的web.config文件: http://www.codeplex.com/urlrewriter/Release/ProjectReleases.aspx?ReleaseId=22618

非常感谢您的提前帮助。

7个回答

38

我在新安装的过程中遇到了同样的异常,将应用程序池标识更改为 NetworkService / aspnet 即可解决。

此外,启用应用程序池上的“加载用户配置文件”也可以解决该问题。


6
应用程序池身份在这篇文章中已经很好地解释了:http://learn.iis.net/page.aspx/624/application-pool-identities/。微软进行这些更改有一些充分的理由。 - bshacklett
1
重启应用程序池解决了我的问题。谢谢!肯定节省了我一些时间和头痛的折磨。 - Ariel
@bshacklett,修复新版本的问题没有错,但我希望微软使用更易懂的错误信息,而不是非常冗长且毫无意义的信息。 - dvdmn
我在将一个 .net 2.0 应用程序托管到 Windows 2012 服务器时遇到了问题。在注册框架后,这解决了我的安全问题。 - LukeP

11

请尝试以下操作:

应用程序池 -> 高级设置 -> 加载用户配置文件 = 是


5

1
这个问题的一个原因是你使用服务器从互联网上下载应用程序来发布,这样文件就会被标记为来自于互联网,安全设置会阻止其运行。
"从互联网下载"的标记被存储在文件系统中作为NTFS备用数据流。使用 "Streams" 工具来显示和移除标记: http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx 然后重新启动应用程序池。

0

我遇到了这个问题是因为工作中的网络驱动器。当我将项目移动到我的桌面上时,它又开始正常工作了。


0

这实际上是GoDaddy的中等信任环境中已知的问题。但是,随着 URL Rewriter 3.0 的最新版本发布,所有这些问题现在都已经解决。请获取最新版并告诉我是否有任何问题。


0
我曾经遇到过 GoDaddy 的类似问题。虽然一开始看起来与堆栈跟踪无关(而且由于您使用第三方代码可能不适用于您),但删除 Response.End() 调用解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接