1

我有与先前解决的问题相同的问题,但是,此解决方案对我没有帮助。

我已经在下面发布了之前的问题和答案:

表单身份验证适用于开发服务器,但不适用于生产服务器(相同的 SQL 数据库)

问题:

我以前从来没有遇到过这个问题,我完全不知所措。

我有一个带有 ASP.NET Forms 身份验证、配置文件和角色的 SQL Server 2008 数据库,并在开发工作站上运行。我可以毫无问题地使用创建的用户登录。

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

我确保生成一个机器密钥,它在开发 web.config 和生产 web.config 上都是相同的。

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

数据库中还有其他内容,FluentNHibernate 生成的架构。此内容可以在开发和生产服务器上成功查询。

这令人难以置信,我相信我已经验证了一切,但显然它仍然无法正常工作,我一定错过了一些东西。请问,有什么想法吗?

回答:

由于忘记在成员资格提供程序元素下的 web.config 中设置 >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>

非常感谢任何帮助。

4

2 回答 2

1

1)尝试添加一个 defaultProvider 设置:

<membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>

2) 你有

applicationName="/"/

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

3)

<add name="AspNetSqlMembershipProvider"> 

“AspNetSqlMembershipProvider”之后不应有右括号

于 2010-06-03T07:51:11.587 回答
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="/"/>
于 2010-06-03T07:48:53.083 回答