发布时的网站不允许登录

时间:2009-09-23 06:02:59

标签: asp.net authentication forms

好的,我已经使用表单身份验证发布了一个站点。它适用于我的登台服务器。它在生产服务器上不起作用。唯一不同的是sql在另一台机器上进行生产。

该网站确实有效,显示来自sql的数据,但是当我使用网站上的登录链接时,它会显示登录表单,我登录后,它会重定向到主页面,它仍然显示“登录”而不是“登出”。

我已经尝试过aspnet_regsql来卸载/安装服务器的表单身份验证。我重新启动了www服务。这是我的web.config的一部分

    <membership>
  <providers>
    <remove name="AspNetSqlMembershipProvider"/>
    <add name="AspNetSqlMembershipProvider" 
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
         connectionStringName="LocalSqlServer" 
         enablePasswordRetrieval="true" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="true" 
         applicationName="/TriState" 
         requiresUniqueEmail="true" 
         minRequiredPasswordLength="4" 
         minRequiredNonalphanumericCharacters="0" 
         passwordFormat="Clear" 
         maxInvalidPasswordAttempts="5" 
         passwordAttemptWindow="10" 
         passwordStrengthRegularExpression="" />
  </providers>
</membership>

7 个答案:

答案 0 :(得分:1)

您如何在生产环境中创建角色和用户?您是否使用开发数据库的备份?在这种情况下,请注意aspnet_Applications表。确保开发和生产环境中的应用程序名称相同。如果没有,请尝试手动编辑表格。

答案 1 :(得分:0)

您的登录页面是否有任何名为login.aspx的机会? 我在过去遇到过这个问题,因为它创建了与登录控件相同的类名,并且发生了冲突。在我的情况下,我得到了“黄色死亡屏幕”,即堆栈跟踪,因为它引发了异常,但后来我重命名了页面,它没问题。

答案 2 :(得分:0)

您应该明确设置您的应用程序名称。检查数据库中的应用程序表。如果您有两个条目,那么系统正在为您的开发箱和服务器使用不同的应用程序名称。如果您明确设置名称,则不会发生冲突。

答案 3 :(得分:0)

应用程序是否可能提供错误的Cookie?在我们的测试服务器上,主机名与生产服务器不同,并且cookie最终位于不同的域中。测试和生产服务器需要知道他们所服务的域以发回正确的cookie(这是通过将名称和域存储在数据库中来完成的。)

答案 4 :(得分:0)

您是否尝试从登台服务器备份数据库并在生产服务器上恢复? (here are instructions to do that.

这将确认您使用的数据库不是问题。

答案 5 :(得分:0)

好的,您是否尝试过手动登录以绕过会员检查?这将排除表单身份验证本身就是问题。

        if (Request.QueryString["ReturnUrl"] != null)
        {
            FormsAuthentication.RedirectFromLoginPage("someuserid", false);
        }
        else
        {
            FormsAuthentication.SetAuthCookie("someuserid", false);
            Response.Redirect("~/SomePage.aspx");
        }

检查您的用户是否设置了您允许授权的任何角色。

    <authorization>
        <deny users="?"/>
        <allow roles="Public"/>
        <allow roles="AdminUser"/>
    </authorization>

检查是否有任何web.configs进一步向下(继承自更高级别的文件夹web.configs),它通过指定授权来允许或拒绝任何用户的角色。

答案 6 :(得分:0)

确保您的应用程序名称在生产数据库中相同:

applicationName="/TriState"