“间歇性故障排除”;找不到OpenID端点”;使用Google和DotNetOpenAuth发送消息

本文关键字:Google 使用 DotNetOpenAuth 消息 端点 找不到 故障 排除 OpenID | 更新日期: 2023-09-27 18:27:46

在过去的一周里,我一直在断断续续地对这个问题进行故障排除。我有一个网站使用了DotNetOpenAuth项目中的依赖方MVC代码。我从2009年开始使用它。

最近,谷歌登录一直失败。我想说,大约80%的时间谷歌登录工作良好。因此,间歇性的性质使得这种情况很难诊断。

以下是我尝试过的:

  1. 当然,我已经验证了openid_identifier使用的是正确的URL(https://www.google.com/accounts/o8/id)
  2. 我已经更新到最新版本(DotNetOpenAuth 3.4)
  3. 我已经尝试根据这个答案添加默认的代理设置
  4. 我扩展了超时设置,甚至减少了SQL上的内存,为IIS提供了更多的RAM
  5. 我在每个请求和错误中都添加了日志记录,以查看是否可以获得任何有价值的信息。这并不能告诉我什么
  6. 我观察了Fiddler的请求/响应,看看我是否能发现什么
  7. 我已经在StackOverflow上测试了很多次我的谷歌登录,很可能这实际上是谷歌的问题。到目前为止,它每次都在起作用

有什么想法吗?


更新

为了找出问题所在,我对网站上的代码做了一些更改。与其在一条线上做这些。。。

openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();

我把它分成几个部分,中间登录。。。

MvcApplication.Logger.Info("Loading... " + Request.Form["openid_identifier"]);
var request = openid.CreateRequest(Request.Form["openid_identifier"]);
var redirect = request.RedirectingResponse;
MvcApplication.Logger.Info("Status... " + redirect.Status);
if (redirect.Status.ToString().ToLower() != "found")
{
    MvcApplication.Logger.Error("Details... " + redirect.Body);
}
return redirect.AsActionResult();

所以我会等待下一个错误。

“间歇性故障排除”;找不到OpenID端点”;使用Google和DotNetOpenAuth发送消息

我想明白了。这是由新遗迹引起的。我不确定它到底是如何(或为什么是间歇性的),但它就是这样。New Relic会以某些方式自动插入您的页面,因此可能会干扰对OpenID提供商的请求。

我回顾了一下这一切开始的时间,发现大约是我在服务器上安装NewRelic的时候。所以我卸载了它,重新启动了IIS,并让网站在没有它的情况下运行了48小时。在那段时间里,我没有遇到任何错误。所以几个小时前我重新安装了它,确信我能够复制这个问题。

不管怎样,我又移除了新遗迹,一切都很好。我会通知他们的。