“间歇性故障排除”;找不到OpenID端点”;使用Google和DotNetOpenAuth发送消息
本文关键字:Google 使用 DotNetOpenAuth 消息 端点 找不到 故障 排除 OpenID | 更新日期: 2023-09-27 18:27:46
在过去的一周里,我一直在断断续续地对这个问题进行故障排除。我有一个网站使用了DotNetOpenAuth项目中的依赖方MVC代码。我从2009年开始使用它。
最近,谷歌登录一直失败。我想说,大约80%的时间谷歌登录工作良好。因此,间歇性的性质使得这种情况很难诊断。
以下是我尝试过的:
- 当然,我已经验证了
openid_identifier
使用的是正确的URL(https://www.google.com/accounts/o8/id) - 我已经更新到最新版本(DotNetOpenAuth 3.4)
- 我已经尝试根据这个答案添加默认的代理设置
- 我扩展了超时设置,甚至减少了SQL上的内存,为IIS提供了更多的RAM
- 我在每个请求和错误中都添加了日志记录,以查看是否可以获得任何有价值的信息。这并不能告诉我什么
- 我观察了Fiddler的请求/响应,看看我是否能发现什么
- 我已经在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();
所以我会等待下一个错误。
我想明白了。这是由新遗迹引起的。我不确定它到底是如何(或为什么是间歇性的),但它就是这样。New Relic会以某些方式自动插入您的页面,因此可能会干扰对OpenID提供商的请求。
我回顾了一下这一切开始的时间,发现大约是我在服务器上安装NewRelic的时候。所以我卸载了它,重新启动了IIS,并让网站在没有它的情况下运行了48小时。在那段时间里,我没有遇到任何错误。所以几个小时前我重新安装了它,确信我能够复制这个问题。
不管怎样,我又移除了新遗迹,一切都很好。我会通知他们的。