我有与先前解决的问题相同的问题,但是,此解决方案对我没有帮助。
我已经在下面发布了之前的问题和答案:
表单身份验证适用于开发服务器,但不适用于生产服务器(相同的 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>
非常感谢任何帮助。