0

在这个例子中,我有几个站点。

  • a.site.com
  • b.site.com
  • c.site.com
  • 上述每个站点都具有相同的相同点machinekey。此示例 a.site.com 和 b.site.com 也存在于服务器 1 上,而 c.site.com 存在于服务器 2 上。

    使用表单身份验证,我可以毫无问题地在 a.site.com 和 b.site.com 之间导航,只需验证一次。但是,即使 c.site.com 具有相同的内容,machinekey我也无法导航到 c.site.com 并保持登录状态。

    我可以使用域 cookie 来解决这个问题。但这不是理想的解决方案,原因有很多。

    如何在没有域 cookie 的情况下跨服务器使用机器密钥?

    它们在同一个域中。这些站点也是完全相同的代码,只是多个 IIS 页面。唯一的区别是站点位于不同的服务器上

    谢谢!

    编辑 web.config

     <machineKey decryptionKey="encryptkey" validationKey="encryptkey" validation="SHA1"  decryption="AES"/>
    <customErrors mode="Off" defaultRedirect="noaccess.aspx" />
    <authentication mode="Forms">
      <forms timeout="120" domain=".site.com" cookieless="UseCookies" enableCrossAppRedirects="true" name=".ASPXAUTH" loginUrl="default.aspx" protection="All" path="/" />
    </authentication>
    

    我的意思是我去发布 a.site.com - server1 : publsh b.site.com -server1 : publish - c.site.com server2 代码没有变化。是的,我删除了密钥,但我确信密钥已正确创建。

    4

    2 回答 2

    0

    您需要使用共享会话状态机制,例如状态服务器或 SQL 服务器,以便网络场中的所有服务器共享会话状态。

    于 2013-04-18T01:13:46.483 回答
    0

    您能否仔细检查所有 3 台服务器是否安装了相同的 Windows 更新(特别是 .NET 框架)和相同的服务包级别。所有 3 台服务器上的 .NET 版本是否相同?

    于 2013-04-18T03:05:29.600 回答