2009-10-06 2 views
2

Я работаю на веб-сайте, в котором я извлечения данных XML из внешнего URL, используя следующий код407 Proxy Authentication Required

WebRequest req = WebRequest.Create("External server url"); 
req.Proxy = new System.Net.WebProxy("proxyUrl:8080", true); 
req.Proxy.Credentials = CredentialCache.DefaultCredentials; 
WebResponse resp = req.GetResponse(); 
StreamReader textReader = new StreamReader(resp.GetResponseStream()); 
XmlTextReader xmlReader = new XmlTextReader(textReader); 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(xmlReader); 

Этот код работает отлично на моем компьютере разработки (Windows XP с .Net 3.5)

Но когда я раскрываю этот код IIS (как в Windows XP и в Windows Server 2003) это дает мне следующее сообщение об ошибке

«удаленный сервер возвратил ошибку: (407) Proxy Authentication Required «.

Иногда это дает мне

"Удаленный сервер возвратил ошибку: (502) Bad Gateway."

После кода из моего web.config

<system.net> 
    <defaultProxy> 
     <proxy usesystemdefault="False" proxyaddress ="http://172.16.12.12:8080" bypassonlocal ="True" /> 
    </defaultProxy> 
    </system.net> 

Пожалуйста, помогите мне?

[Редактировать] Даже когда я запустить веб-сайт для Devlopment ПК, но через IIS он дает мне ошибку «Удаленный сервер возвратил ошибку:. (407) Proxy Authentication Required»

Но когда я запускаю сайт с сервера Microsoft Devlopment, он работает нормально

ответ

1

ли работа при изменении фрагмента кода в web.config для:

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy usesystemdefault="False" proxyaddress ="http://172.16.12.12:8080" bypassonlocal ="True" /> 
    </defaultProxy> 
</system.net> 
+0

Изменить его на что? –

+0

@Mohit, уже я пишу CredentialCache.DefaultCredentials; внутри исходного кода, так что я не думаю, что это имеет какое-то значение? –

0

Это, вероятно, вызвано счета что IIS работает в условиях отсутствия соответствующих разрешений для прохождения через аутентификационный прокси.

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

Вы можете либо предоставить разрешения пользователя IIS для доступа через прокси (что вряд ли будет работать в среде домена, так как пользователь IIS будет локальным пользователем машины), либо настроить приложение для работы в сети пользователь с разрешениями пройти через прокси.

Это можно сделать либо путем запуска IIS в качестве пользователя домена (я бы не рекомендовал этот подход), либо путем настройки приложения для работы в качестве пользователя домена с помощью web.config (см. Статью this для получения дополнительной информации о том, как это сделать).

7

@Mohit Агарвал

Большое спасибо за предположение, добавляющие 'useDefaultCredentials = "истинный"', ты звезда!

Я пытаюсь получить библиотеку .NET для образца API данных Google, который работает неделями без успеха. Добавление вашего предложения исправило мою проблему, и теперь я получаю подключение вместо 407 Proxy Authentication Required.

speadsheet.exe.Содержимое конфигурации должны быть:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy usesystemdefault="true"/> 
    </defaultProxy> 
    </system.net> 
</configuration> 

В моем случае не как Google предложить:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<system.net> 
    <defaultProxy> 
    <proxy usesystemdefault="true"/> 
    </defaultProxy> 
</system.net> 
</configuration> 

http://code.google.com/p/google-gdata/wiki/WebProxySetup

1

Под корневого элемента <configuration> в app.config или Web.config:

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
    <proxy usesystemdefault="True"/> 
    </defaultProxy> 
</system.net> 
1

Это может быть полезно для кого-то если вы обнаружите это через Google, что вы действительно можете использовать его для использования в .NET-приложениях, которые еще не имеют собственного файла AppName.exe.config (или вы можете изменить его, если это так). Мы используем NextGen EPM (медицинское планирование/биллинг), и их система обработки кредитных карт постоянно застревает на нашем прокси-сервере, потому что она не будет передавать учетные данные. Я сделал файл EXEName.config (NextGenEPM.exe.config в данном случае), содержащий фрагмент выше:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy usesystemdefault="true"/> 
    </defaultProxy> 
    </system.net> 
</configuration> 

успеха! Это позволило мне решить проблему, не просачиваясь на нашем прокси-сервере, который непреклонно настроен на необходимость аутентификации, и мы бы не пошли на компромисс.

0

Мы долгое время боролись с этой проблемой и обновляли наш app.config, чтобы использовать учетные данные по умолчанию, как указано в ответах выше. Однако это все еще не сработало! После большой боли мы обнаружили, что наш app.config не включался автоматически с нашим кликом после приложения. Простая ошибка вызвала чрезвычайную потерю крушения !!!

1

Попробуйте это, если вы хотите, чтобы уточнить детали прокси

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
      <system.net> 
       <defaultProxy enabled="true" useDefaultCredentials="true"> 
       <proxy proxyaddress="http://<ProxyServer>:<port>" 
         usesystemdefault="False" 
         bypassonlocal="True" 
         autoDetect="False" /> 
       </defaultProxy> 
      </system.net> 
</configuration> 

Ура!

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