我之前从未遇到过这个问题,我完全失去了。
我有一个SQL Server 2008数据库,其中包含ASP.NET Forms身份验证,配置文件和角色,并且在开发工作站上正常运行。我可以毫无问题地使用创建的用户登录。
我在开发计算机上备份数据库并将其还原到生产服务器上。我将DLL和ASP.NET文件xcopy到服务器。我在web.config中进行了必要的更改,将SQL连接字符串更改为指向生产服务器数据库并上传它。
我确保生成一个机器密钥,它在开发web.config和生产web.config上都是一样的。
然而,当我尝试登录生产服务器时,我能够在开发计算机上成功登录的同一用户在生产服务器上失败。
数据库中还有其他内容,即FluentNHibernate生成的模式。可以在开发和生产服务器上成功查询此内容。
这是令人难以置信的,我相信我已经验证了一切,但显然它仍然无法正常工作,我一定错过了一些东西。请问,有什么想法吗?
答案 0 :(得分:6)
我忘记在成员资格提供程序元素下的web.config中设置applicationName属性,因此我遇到了类似症状的问题。
<membership defaultProvider="SqlProvider">
<providers>
<clear />
<add
name="SqlProvider"
applicationName="MyApplication"
...
/>
</providers>
</membership>
用户与特定应用程序相关联。由于我没有设置applicationName,因此默认为应用程序路径(类似于“/ MyApplication”)。当它被转移到生产时,路径已更改(例如,更改为“/ WebSiteFolder / SomeSubFolder / MyApplication”),因此应用程序名称默认为新的生产路径,并且无法与设置的原始用户帐户建立关联在发展中。
您的问题可能与我的问题相同吗?