代码之家  ›  专栏  ›  技术社区  ›  Todd Brooks

窗体身份验证在开发服务器上工作,但在生产服务器上不工作(相同的SQL db)

  •  2
  • Todd Brooks  · 技术社区  · 16 年前

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

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

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

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

    这是令人难以置信的,我相信我已经验证了一切,但显然它仍然不起作用,我一定错过了什么。拜托,有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  6
  •   John Allers    16 年前

    由于忘记在web.config中的membership providers元素下设置applicationName属性,我曾经遇到过类似症状的问题。

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

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