我正在尝试将 MVC3 应用程序部署到 IIS 7.5 在每条路由上我都收到 http 500 - 内部服务器错误:
Error Summary
HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred. Detailed Error Information
Module ManagedPipelineHandler
Notification ExecuteRequestHandler
Handler System.Web.Mvc.MvcHandler
Error Code 0x00000000
Requested URL http://www.xxxxxx.com:80/Home/Index
Physical Path C:\inetpub\wwwroot\xxxxxx.com\Home\NoAccess
Logon Method Anonymous
Logon User Anonymous
Failed Request Tracing Log Directory C:\inetpub ..
我可以请求简单的 html 文件,或者使用内联代码的常规 aspx 文件。已启用失败请求跟踪,请求跟踪显示一条警告:
131. -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
当我尝试在 IIS 中重新创建站点并测试连接时,我收到“无法验证对路径的访问”错误。我授予了网络服务完全控制权,应用程序池的身份也是网络服务。
框架设置为4.0,托管管道模式=集成。
有什么想法吗?或者需要更多信息吗?
答案1
先看这里: https://stackoverflow.com/questions/5349867/error-handling-in-asp-net-mvc3
更新:如果它没有帮助 - 请阅读此讨论(特别是第 2 页的最后一篇文章): http://forums.asp.net/t/1657582.aspx/2/10?Error+500+0+when+MVC+runs+on+IIS7
更新2:这个看起来也很有希望: http://forums.asp.net/t/1652026.aspx/1
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
从......中去除http处理程序
并添加<add verb="POST,GET" name="scripthandlerajaxFactory" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
到处理程序
答案2
请检查应用程序,也许这是预期的行为。
我遇到了完全相同的问题,检查了所有明显的权限(IIS APPPOOL\AppPoolName 对文件系统和数据库的权限、经过身份验证的用户对“脚本”和“内容”目录的访问权限),但仍然没有运气。甚至进程监视器也无济于事,没有失败的访问日志。
解决方案很简单 - 403.0 是正确的响应代码。我相信 Web 应用程序应该返回一个标准视图,表示“您的域帐户未在数据库中列出,因此请离开”(正如该项目中的所有应用程序一样,这是我们使用的惯例)。但是对于这个应用程序,开发人员将其做得不同,并返回 IIS“修饰”的纯 403.0。
答案3
从备份中移动 wwwroot 文件夹后出现此问题。必须将 IIS_IUSRS 添加到文件夹权限。https://stackoverflow.com/questions/14934006/iis-iusrs-and-iusr-permissions-in-iis8