Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Проблема с прокси при работе с веб-сервисами.


Автор: Naum 3.5.2007, 17:01
Доброго всем времени суток.
Блин, уже полдня бьюсь над парой строчек:
Код

FlightInformation webservice = new FlightInformation();
webservice.Credentials = GalileoUtils.GetCacheCredentials(webservice.Url);
webservice.Proxy = GalileoUtils.GetWebProxy();
IAsyncResult asyncResult = webservice.BeginGetInformation(galileoHAP, apolloHAP, requestBuilder.BuildRequest(request, flight), null, null);
asyncResult.AsyncWaitHandle.WaitOne();
XmlElement vendorResponse = webservice.EndGetInformation(asyncResult);

выдает ошибку "Proxy authentication required". Подскажите, плиз, из-за чего может быть?
Вот что выяснил я:
1. Proxy.Address - если пустое, выдается такая же ошибка.
2. Ну и, конечно, если Proxy.Credentials не имеют никаких прав на доступ к прокси.

Заранее спасибо.

Автор: Naum 3.5.2007, 18:08
Если метод с, приведенными выше, строками будет в вин-приложении, то все нормуль. Если же этот метод в отдельной дллке, и мы обращаемся опять же к этому методу из вин-приложения, тогда уже вылетает ошибка, что требуеся аутентификация на прокси. :(

Автор: tol05 4.5.2007, 19:01
а если вместо
Код

webservice.Credentials = GalileoUtils.GetCacheCredentials(webservice.Url);


сделать
Код

webservice.Credentials = System.Net.CredentialCache.DefaultCredentials;


или
Код

Proxy.Credentials  = System.Net.CredentialCache.DefaultCredentials;

 
не помню точно что smile


Автор: Naum 10.5.2007, 10:03
tol05, спасибо за ответ но не помогло. :(
Цитата(tol05 @  4.5.2007,  20:01 Найти цитируемый пост)
не помню точно что

Цитата(tol05 @  4.5.2007,  20:01 Найти цитируемый пост)
    
Proxy.Credentials  = System.Net.CredentialCache.DefaultCredentials;


Автор: arilou 17.5.2007, 10:52
Naum, скорее всего проблема в следующем. Когда ты запускаешь веб-приложение, оно работает НЕ под аккаунтом залогинившегося юзера, а под тем, которой прописан либо в machine.config (я так понимаю, что имперсонацию ты не используешь). Поэтому System.Net.CredentialCache.DefaultCredentials будет указывать на аккаунт ASPNET (по умолчанию). А прокси ваш наверное настроен пускать только юзеров из вашего домена, или что-то подобное?

Тут выход такой: создать юзера в домене, дать ему доступ к прокси, и настроить имперсонацию в web.config'е твоего сервиса, чтобы использовался этот аккаунт.

Автор: Naum 18.5.2007, 18:13
arilou, это не ASP приложение это Class library-приложение, которое стучится к удаленным вебсервисам. Насколько я разобрался, просто времени нет вообще  smile , скорее всего http://forum.vingrad.ru/forum/topic-92347/hl/test-driven/index.html (Фрэймворк для написания тестов) по каким-то причинам не проходит прокси.

Тему, наверно, пока оставлю открытой, хотя в принципе проблема решена. Нам дали VPN-connection без всяких проксей.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)