Asp.net mvc 3 站点重定向到服务器上错误的登录页面,但在本地工作正常
所以,我在一个MVC3网站上工作。我在本地开发,然后构建服务器在签入时运行,如果构建工作正常,则将其推送到开发服务器 Win7中的我的本地框,VS2010 SP1使用IIS Express作为本地web服务器。服务器是Win2k8服务器R2。在我的本地机器上安装了MVC3软件包,在服务器上,我将MVC3库与应用程序捆绑在一起,因此我不必在机器上安装它们 这就是它变得奇怪的地方。路由设置为默认设置为Asp.net mvc 3 站点重定向到服务器上错误的登录页面,但在本地工作正常,asp.net-mvc-3,forms-authentication,iis-7.5,iis-express,Asp.net Mvc 3,Forms Authentication,Iis 7.5,Iis Express,所以,我在一个MVC3网站上工作。我在本地开发,然后构建服务器在签入时运行,如果构建工作正常,则将其推送到开发服务器 Win7中的我的本地框,VS2010 SP1使用IIS Express作为本地web服务器。服务器是Win2k8服务器R2。在我的本地机器上安装了MVC3软件包,在服务器上,我将MVC3库与应用程序捆绑在一起,因此我不必在机器上安装它们 这就是它变得奇怪的地方。路由设置为默认设置为HomeController,并用[Authorize]属性标记,因此未经身份验证的用户首先应该看到
HomeController
,并用[Authorize]
属性标记,因此未经身份验证的用户首先应该看到的是登录页面。我使用的表单身份验证的设置非常简单:
<authentication mode="Forms">
<forms loginUrl="~/Auth/LogIn" timeout="2880" />
</authentication>
唯一不同于默认设置的是它重定向到的URL。现在,这在IIS express中完全可以正常工作。因此,我承诺,它会建立,并推动开发。IIS管理器中的配置编辑器确认服务器上的loginUrl
仍然是~/Auth/LogIn
。这也可以在web.config中直接确认。但是,当我尝试访问该站点时,我会被重定向到/Account/Login?ReturnUrl=%2f
。我知道应用程序运行正常,就好像我手动进入/Auth/Login/
,我得到了登录页面,我可以登录并使用该站点
我以前从未见过这种行为,有没有其他人遇到过,你是如何解决的?我有一些建议。这些都是我的想法,因为我无法实际检查您的开发服务器,也没有遇到过这样的问题。这些建议可能听起来很傻,很容易被忽略,但最令人沮丧的错误是那些由我们通常不寻找的明显原因造成的,因为我们跳转到更复杂的可能性
如果Ofer Zeligs选项变干,请尝试以下操作: 找出构建(或)部署到服务器时使用的配置,并检查相应的web.config转换文件。或者,如果您没有使用web.config转换,请了解如何为不同的环境维护配置,并使用这些知识查看所有维护的单独配置中是否都包含
~/Auth/LogIn
。不同环境通常有不同的配置文件,我看到它们不同步。-这显然是MVC 3的RC2的一个缺陷
解决方法是添加以下条目:
<add key="autoFormsAuthentication" value="false" />
}
我们在MVC3的RTM版本中也遇到了同样的问题。瓦伦的回答让我有点难以理解,但最终还是找到了解决办法。为了让其他人明白这一点: 在Web.config文件中,您可能已经在以下部分中有类似的内容:
虽然这在Windows7dev机器上可以正常工作,但由于某些原因,它在Windows2008R2服务器上无法工作(某些组件的不同版本?我不知道)。为了实现这一点,我必须将这一行添加到该部分:
您是否检查了dev服务器上的web.config
以查看它是否已更新?如果文件有时不同步,就会发生这种情况。您是否尝试在浏览器中~/Auth/LogIn?如果失败,则虚拟目录映射错误。对我有效。新internet站点的默认登录页为“帐户/登录”。我被重定向到帐户/登录,直到我做了
private static string GetLoginUrl()
{
return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl;
staticFormsAuthenticationSettings()
{
LoginUrlKey = "loginUrl";
DefaultLoginUrl = "~/Account/Login";
}
<authentication mode="Forms">
<forms loginUrl="Login/Login" defaultUrl="Home"/>
</authentication>
<add key="loginUrl" value="Login/Login" />