Asp.net mvc 3 站点重定向到服务器上错误的登录页面,但在本地工作正常

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]属性标记,因此未经身份验证的用户首先应该看到

所以,我在一个MVC3网站上工作。我在本地开发,然后构建服务器在签入时运行,如果构建工作正常,则将其推送到开发服务器

Win7中的我的本地框,VS2010 SP1使用IIS Express作为本地web服务器。服务器是Win2k8服务器R2。在我的本地机器上安装了MVC3软件包,在服务器上,我将MVC3库与应用程序捆绑在一起,因此我不必在机器上安装它们

这就是它变得奇怪的地方。路由设置为默认设置为
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/
,我得到了登录页面,我可以登录并使用该站点


我以前从未见过这种行为,有没有其他人遇到过,你是如何解决的?

我有一些建议。这些都是我的想法,因为我无法实际检查您的开发服务器,也没有遇到过这样的问题。这些建议可能听起来很傻,很容易被忽略,但最令人沮丧的错误是那些由我们通常不寻找的明显原因造成的,因为我们跳转到更复杂的可能性

  • 在服务器级别(与站点级别相反)上,开发服务器的IIS中是否有任何相关设置?具体来说,在Authentication->Forms Authentication下

  • dev服务器上的machine.config中是否有任何相关设置

  • 您是否尝试过在dev服务器上的应用程序目录上执行,比如说查找“Account”


  • 如果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" />