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

Tod*_*oks 2 asp.net asp.net-mvc forms-authentication asp.net-membership

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

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

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

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

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

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

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

Joh*_*ers 6

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

  <membership defaultProvider="SqlProvider">
    <providers>
      <clear />
      <add
        name="SqlProvider"
        applicationName="MyApplication"
        ...
        />
    </providers>
  </membership>
Run Code Online (Sandbox Code Playgroud)

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

你的问题可能跟我的一样吗?