2016-04-08 5 views
0

Я пытаюсь реализовать внешнюю аутентификацию с помощью facebook в проекте app2 web-сайта asp.net.Microsoft.Owin.Security.Facebook: Не удалось связаться с facebook tokenEndpoint

Версия пакета Microsoft.Owin.Security.Facebook, который я использую, является 3.0.1.

Эти шаги работает просто отлично:

  • Перенаправление форме Войти facebook для внешнего входа
  • facebook обратного вызова на серверной апи, с кодом авторизации (facebook входа в систему успешной)

После этого промежуточное программное обеспечение должно вызвать tokenEndpoint facebook, 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 в моем приложении, но ошибка все еще там.

Я не знаю, почему вызов работает в консольном приложении, но не в веб-приложении. Я попытался сравнить состояния HttpClient между двумя приложениями, но я нашел немного.

действительно ли кто-нибудь знает, в чем причина проблемы?

+0

Вам нужен прокси-сервер или так там? – BugFinder

+0

@BugFinder Я не уверен, что я недооценил, но да, мне нужно пройти через прокси для доступа к Интернету в моей среде разработки. Как я уже сказал, без прокси звоните из консольного приложения KO – Bombinosh

+0

Вам нужно будет либо забрать настройки прокси, либо разрешить пользователям вводить их. – BugFinder

ответ

0

Поведение WebRequest.DefaultWebProxy не совпадает с моим консольным приложением и моим веб-приложением, несмотря на то, что прокси-сервер не был объявлен ни в app.config, ни в web.config.

Я прочитал в msdn, что если прокси-сервер не найден в конфигурации приложения, WebRequest.DefaultWebProxy будет использовать прокси-сервер по умолчанию.

Это было в случае консольного приложения, но не для веб-приложения. Чтобы использовать системный прокси-сервер в веб-приложении, мне пришлось специально использовать WebRequest.GetSystemWebProxy().

Это решило доступ к токену facebookEndpoint в моей среде разработки.

У меня нет подсказки, откуда появился прокси-сервер, возвращаемый в моем веб-приложении WebRequest.DefaultWebProxy.

Смежные вопросы