代码之家  ›  专栏  ›  技术社区  ›  Mihai Lazar

如何在无会话负载平衡环境中配置dotNetOpenId

  •  8
  • Mihai Lazar  · 技术社区  · 17 年前

    你可能以前解决过这个问题。

    我需要能够在没有会话粘性的环境中使用open-id。服务器确实保留了标头。

    3 回复  |  直到 17 年前
        1
  •  6
  •   Andrew Arnott    17 年前

    有状态的

    最优化的方法是编写一个自定义持久性存储,实现 IRelyingPartyApplicationStore 获取OpenID RP所需的“秘密”,并将您的实例传递给 OpenIdRelyingParty(IRelyingPartyApplicationStore) 构造函数,或在您的 web.config file .

    无状态

    对于大多数场景来说,一个更简单的解决方案是使用无状态模式,这样就不需要在web场的服务器之间共享任何状态。

    您可以通过实例化来激活无状态模式 OpenIdRelyingParty 经过 null 作为您的应用商店实例。调用默认构造函数将导致DNOA使用其内存存储,这会在服务器场上中断,因此默认构造函数不足。

    Stateless = true 在控制。

        2
  •  5
  •   Jeff Atwood    16 年前

    var uri = new Uri(Request.Url, Request.RawUrl);
    var openid = new OpenIdRelyingParty(null, uri, 
                 Request.HttpMethod == "GET" ? Request.QueryString : Request.Form);
    

    到目前为止,这似乎是有效的,尽管据安德鲁说,有一点表现不佳。不确定这是否重要,因为登录是一种相当罕见的活动。

        3
  •  1
  •   mkchandler    17 年前

    编辑: 我没有任何示例代码,因为我从未在无会话环境中使用过DotNetOpenID,但我会查看此链接,它可能会提供您需要的信息: http://code.google.com/p/dotnetopenid/wiki/WebFarmHowto