表单身份验证适用于dev服务器,但不适用于生产服务器(相同的SQL db

时间:2010-06-03 07:42:54

标签: c# authentication forms production

我遇到了与先前解决的问题相同的问题,但是这个解决方案并没有帮助我。

我已在上面发布了上一个问题和答案:

Forms Authentication works on dev server but not production server (same SQL db)

问题:

  

我之前从未遇到过这个问题,   我完全失去了。

     

我有一个SQL Server 2008数据库   ASP.NET Forms身份验证,配置文件   和角色创建和功能   开发工作站。我可以   使用没有创建的用户登录   问题

     

我备份了数据库   开发计算机并将其恢复   生产服务器。我xcopy了   DLL和ASP.NET文件到服务器。   我做了必要的改变   web.config,更改SQL   连接字符串指向   生产服务器数据库和上传   它

     

我确保生成一台机器   关键,两者都是一样的   开发web.config和   生产web.config。

     

然而,当我尝试登录时   生产服务器,同一个用户   我能够成功登录   开发计算机,失败了   生产服务器。

     

还有其他内容   数据库,生成的模式   FluentNHibernate。这个内容是可以的   要在两者上成功查询   开发和生产服务器。

     

这是令人难以置信的,我相信我已经   验证了一切,但很明显   仍然没有工作,我必须有   错过了什么。请问,有什么想法吗?

答案:

  

我忘记在成员资格提供程序元素下的web.config中设置> applicationName属性,因此我遇到了类似症状的问题。

     

                               

     

用户与特定应用程序相关联。由于我没有设置applicationName,因此它默认为应用程序路径(类似于“/ MyApplication”)。当它移动到生产时,路径发生了变化(例如“/ WebSiteFolder / SomeSubFolder”   / MyApplication“),因此应用程序名称默认为新的生产路径,并且无法对在>开发中设置的原始用户帐户进行>关联。

     

您的问题可能与我的问题相同吗?

我已经在我的web.config中使用了这个,但仍然遇到了问题。有什么想法吗?

<membership defaultProvider="AspNetSqlMembershipProvider">
            <providers>
                <clear/>
                <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/"/>
            </providers>
        </membership>
        <profile>
            <providers>
                <clear/>
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/"/>
            </providers>
        </profile>
        <roleManager enabled="false">
            <providers>
                <clear/>
                <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
                <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </roleManager>

任何帮助都非常适合。

2 个答案:

答案 0 :(得分:1)

1)尝试添加defaultProvider设置:

<membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>

2)你有

applicationName="/"/

查看应用程序表,使用的名称是什么?

3)

<add name="AspNetSqlMembershipProvider"> 

在“AspNetSqlMembershipProvider”之后不应该有一个小括号

答案 1 :(得分:0)

您当前的行是

<add name="AspNetSqlMembershipProvider">type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, >Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/"/>

但不应该是

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/"/>