我已将我的MVC项目发布到IIS 6服务器。在应用程序MVCapp下运行。 Web项目获取网址:www.domain.com/MVCapp /.
我使用表单登录进行身份验证,并在发布后出现问题。
web.config如下:
<authentication mode="Forms">
<forms name="CTWebCookie" loginUrl="~/Account/Login" defaultUrl="~/Home/Index" slidingExpiration="true" protection="All" timeout="20"/>
</authentication>
例如,如果我在操作中运行以下代码:
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
..一切正常,用户被重定向到www.domain.com/MVCapp/Account/Login。
但是,当身份验证超时时 - 在下一页请求时,用户将被重定向到www.domain.com/Account/Login。应用程序根目录未路由,并且URL指向IIS根目录。
如何在授权超时后让应用程序解析正确的URL,为什么在编程时签名出来并不能自动退出?
请建议。
答案 0 :(得分:0)
ASP.NET MVC项目模板使用~/Account/Login
。检查你的web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" ... />
</authentication>
<强>更新:强>
IIS根目录(www.domain.com/)上是否有任何应用程序?如果是这样 - 尝试从IIS中删除此应用程序。您也可以在Site.Master中添加此行:
<%= System.Web.Security.FormsAuthentication.LoginUrl %>
查看您的loginUrl是否是/ MVCapp / Account / Login或其他任何内容
希望这有帮助
答案 1 :(得分:0)
没关系,想通了(愚蠢的错误),谢谢你的帮助。
问题是登录页面上的一个javascript,它在asyncronous请求的情况下将页面重新加载为target.top。 javascript中的网址未正确解析。