MVC 1 和 IIS 7 错误代码 4011
Posted
技术标签:
【中文标题】MVC 1 和 IIS 7 错误代码 4011【英文标题】:MVC 1 and IIS 7 error code 4011 【发布时间】:2011-08-14 05:40:16 【问题描述】:我有一个在 IIS 7.5 上运行的 MVC 1 应用程序。一些操作完成后,我得到了一个使用 System.Web.Routing.RouteValueDictionary 作为第二个参数的 RedirectToRoute 调用。基本上,它通过 ID 调用特定对象的“详细信息”。
当我在运行 IIS 7.5 的生产服务器上遇到此代码时,它会将我带回登录页面,并在顶部的 URL 中有一个 ReturnUrl 值。再次登录后,它会将我带到应该使用 RedirectToRoute 直接将我带到的页面。
它不会在 localhost 上执行此操作。事件日志中的详细信息是:
事件代码:4011 事件消息:An 发生未处理的异常 ... 应用领域:-domain- 信任级别:完全 应用路径:c:\inetpub\wwwroot\ ... 请求网址: http://mysite.com/405/Acquisition 请求路径: /properties/405/Acquisition 用户 主机地址:-我的外部 ip- 用户:-登录用户- 是 认证:真 身份验证类型:表单 线程 帐户名称:NT AUTHORITY\NETWORK 服务
当然,该路径在服务器上实际上并不存在,因此使用了 MVC。所以我猜测它与 IIS7 的某种权限有关?特别是因为当我再次登录时它会转到正确的页面(并显示确认消息)。这不就是事件代码 4011 吗?
感谢任何帮助。
编辑:
根据 Phill 的问题,这是 web.config 的一部分:
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<remove name="UrlRoutingModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
【问题讨论】:
只针对这一页还是所有页?您是否在 web.config 文件的模块中设置了“runAllManagedModulesForAllRequests”? @Phill 只是为了几页。 @Phill,是的,runAllManagedModulesForAllRequests 在 web.config 中。我已将那篇文章粘贴到我的问题中。 【参考方案1】:在 web.config 中尝试<identity impersonate="false" />
【讨论】:
【参考方案2】:几乎可以肯定是权限问题,但可能不是 IIS 权限问题。
重定向到登录页面的功能是一项 ASP .NET 功能,该功能在您的 Web.config 文件中进行配置。看起来您正在使用表单身份验证,所以它应该在:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginurl="~/some-login-url">
</authentication>
</system.web>
</configuration>
您是否使用了任何 [Authorize] 属性(我不确定这些属性是否存在于 MVC 1 中)?您的 Web.config 中是否有任何授权文件?
第一页是否在不需要您登录的情况下显示,并且只有在您进入第二页时才会提示您登录?
我看到的另一个常见问题与应用程序池回收有关。我曾经有一个应用程序可以做很多工作,在用户会话中存储大量信息,然后用户会被发送到登录页面。我最终发现该应用程序在 IIS 中达到了内存限制,导致它被回收。因此,系统会提示用户再次登录。
我不确定您是否确实遇到了这个问题,但您是否查看了应用程序池设置以确认该应用程序不会被回收?您可能还需要确保在同一个应用程序池中没有任何其他非常繁重的应用程序也可能被回收。
【讨论】:
表单验证,正确。我的网络配置中有一个类似的条目。我没有在任何地方使用 [Authprize] 属性。是的,第一页显示得很好;我登录以访问应用程序,单击周围,然后轻松访问该页面。只有在提交表单时,我才会被重定向回登录。并非所有表格都这样做。例如,我的忘记密码链接提交并显示得很好。 你对瑞恩有什么进一步的建议吗?我已经用头撞墙一周了。 我刚刚编辑了我的答案并添加了一些关于应用程序池的信息。您可能会查看 App Pool 配置以查看它是否正在回收。 我怀疑它的应用程序池。它是唯一在服务器上运行的应用程序。完成的工作也非常少。以上是关于MVC 1 和 IIS 7 错误代码 4011的主要内容,如果未能解决你的问题,请参考以下文章
诊断 IIS 7 和 ASP.NET MVC 上的 404 错误
为啥在 IIS 7.5 下部署 MVC 3 应用程序时出现 401.2/Access is denied 错误?
IIS 7.0 / Windows Server 2008 上的 ASP.NET MVC 3 应用程序出现 404.0 错误