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

时间:2010-02-07 04:42:48

标签: asp.net asp.net-mvc asp.net-membership forms-authentication

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

  <membership defaultProvider="SqlProvider">
    <providers>
      <clear />
      <add
        name="SqlProvider"
        applicationName="MyApplication"
        ...
        />
    </providers>
  </membership>

用户与特定应用程序相关联。由于我没有设置applicationName,因此默认为应用程序路径(类似于“/ MyApplication”)。当它被转移到生产时,路径已更改(例如,更改为“/ WebSiteFolder / SomeSubFolder / MyApplication”),因此应用程序名称默认为新的生产路径,并且无法与设置的原始用户帐户建立关联在发展中。

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