2012-03-13 57 views
0

我在過去的一週裏一直在解決這個問題。我有一個網站使用DotNetOpenAuth項目中的依賴方MVC代碼。自2009年以來,我一直在使用它。使用Google和DotNetOpenAuth斷斷續續的「找不到OpenID端點找到」消息

最近,Google登錄失敗。我會說大約80%的時間谷歌登錄工作正常。所以間歇性的特性使得這很難診斷。

這是我已經試過:

  1. 當然我驗證過openid_identifier使用正確的URL(https://www.google.com/accounts/o8/id
  2. 我已經更新到最新版本(3.4 DotNetOpenAuth)。
  3. 我試過按照this answer添加默認代理設置。
  4. 我已經延長了超時設置,甚至減少了SQL上的內存,以便給予更多的RAM,如this answer所示。
  5. 我已經將日誌記錄添加到每個請求和錯誤,以查看是否可以獲取任何有價值的信息。這並沒有告訴我很多。
  6. 我看過了提琴手的請求/回覆,看我能否找到任何東西。
  7. 我已經在StackOverflow上測試過我的Google登錄信息,因爲實際上這是Google的一個問題。到目前爲止,它一直在工作。

任何想法?


UPDATE

在努力查明問題我改變了我的網站上一點的代碼。而不是做這一切在一行...

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(); 

所以我會等待下一次的錯誤。

回答

0

我想通了。這是由New Relic造成的。我不確定究竟是如何(或者爲什麼是間歇性的),但事實就是如此。 New Relic會以某種方式自動處理您的頁面,因此可能會干擾OpenID提供商的請求。

我回頭看看這一切開始的時間表,發現它恰好在我在服務器上安裝New Relic的時間。所以我卸載了它,重新啓動IIS,並讓站點在沒有它的情況下運行48小時。那段時間我沒有遇到任何錯誤。所以幾個小時前我重新安裝了它,果然我能夠複製這個問題。

無論如何,我已經刪除了New Relic,一切都很好。我會通知他們這件事。