[英]The referenced component 'Microsoft.Owin', 'Microsoft.Owin.Security', 'Microsoft.Owin.Security.Facebook' could not be found?
[英]Microsoft.Owin.Security.Facebook : Unable to reach facebook tokenEndpoint
我正在嘗試在asp.net Web api2項目中使用facebook進行外部身份驗證。
我使用的Microsoft.Owin.Security.Facebook
軟件包的版本為3.0.1。
這些步驟可以正常工作:
之后,中間件應調用facebook tokenEndpoint https://graph.facebook.com/oauth/access_token以獲得訪問令牌。
但是我得到了一個socketException: 連接嘗試失敗,因為一段時間后連接方未正確響應,或者建立的連接失敗
因此,我嘗試在控制台應用程序中模擬對facebook tokenEndpoint(使用HttpClient.GetAsync
)的調用。 我收到了代理錯誤,可以通過在WebRequestHandler
指定代理來解決:
var proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
HttpClient httpclient = new HttpClient(new WebRequestHandler { Proxy = proxy });
//GetAsync OK with the use of the current system proxy
var result = RunSync(() => httpclient.GetAsync("https://graph.facebook.com/oauth/access_token"));
最后,我在應用程序的FacebookAuthenticationOptions
中報告了代理設置,但錯誤仍然存在。
我不知道為什么該呼叫在控制台應用程序中起作用,但在Web應用程序中卻不起作用。 我試圖比較兩個應用程序之間的HttpClient狀態,但發現不多。
有人知道問題的根源可能是什么嗎?
盡管在app.config或web.config中都沒有聲明代理,但WebRequest.DefaultWebProxy
的行為在控制台應用程序和Web應用程序之間並不相同。
我在msdn中讀到,如果在應用程序配置中找不到代理,則WebRequest.DefaultWebProxy
將使用系統默認代理。
控制台應用程序就是這種情況,而Web應用程序則不是。 要在Web應用程序中使用系統代理,我必須專門使用WebRequest.GetSystemWebProxy()
。
這就解決了我開發環境中對facebook tokenEndpoint的訪問。
我不知道WebRequest.DefaultWebProxy
在我的Web應用程序中返回的代理來自何處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.