我在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
用户 主持人地址:-my external ip-
用户: - 用户登录 - 是 认证:真实 身份验证类型:表单
线程 帐户名称:NT AUTHORITY \ NETWORK SERVICE
当然,当然该路径在物理上并不存在于服务器上,因此使用了MVC。所以我猜它与IIS7有某种权限?特别是当我再次登录时,它会转到正确的页面(并显示确认消息)。不是事件代码4011是什么?
感谢任何帮助。
修改
Per 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>
答案 0 :(得分:0)
几乎可以肯定是权限问题,但可能不是IIS权限问题。
重定向到登录页面的功能是ASP .NET功能,该功能在Web.config文件中配置。看起来您正在使用Forms身份验证,因此它位于:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginurl="~/some-login-url">
</authentication>
</system.web>
</configuration>
您是否正在使用任何[授权]属性(我不确定这些属性是否存在于MVC 1中)?您的Web.config中是否有任何授权?
第一页是否显示而不要求您登录,只有当您要访问第二页时才会提示您登录?
我看到的另一个常见问题与App Pool回收有关。我有一个应用程序,它会做很多工作,在用户的会话中存储大量信息,然后用户将被发送到登录页面。我最终发现应用程序在IIS中达到了内存限制,导致它回收。因此,系统会提示用户再次登录。
我不确定您是否遇到了这个确切的问题,但是您是否查看了应用程序池设置以验证该应用程序不会被回收?您可能还希望确保在同一个应用程序池中没有任何其他非常繁重的应用程序也可以进行回收。
答案 1 :(得分:-1)
在web.config中尝试<identity impersonate="false" />