У меня приложение WCF, развернутое с помощью clickonce.
Он подключается к моему серверу, используя https, и все работает нормально
При необходимости я использую прокси по умолчанию, используя следующий код:
<configSections>
<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</sectionGroup>
</configSections>
<system.net>
<defaultProxy useDefaultCredentials="true"/>
</system.net>
В режиме полного доверия все отлично работает
Теперь, если я установлю свои настройки безопасности на частичное доверие, все будет работать нормально, если не задействован прокси-сервер, но если я попытаюсь запустить свое программное обеспечение в корпоративной среде, прокси-сервер
больше не определяется автоматически.
Из моего понимания:
configSections больше не анализируются в средах с частичным доверием, если только не установлен атрибут requirePermission, например:
<section requirePermission="false" name="defaultProxy">
Установка этого атрибута вызывает исключение System.Configuration.ConfigurationException со следующим сообщением об ошибке:
Имя раздела или группы 'defaultProxy'
уже определено. Обновления к этому
может произойти только в конфигурации
уровень, на котором он определен.
Раздел defaultproxy действительно уже определен в файле machine.config:
<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
Однако это, похоже, не проблема, если не установлено значение requirePermission. Другими словами, кажется, что сообщение об ошибке должно быть скорее:
Имя раздела или группы 'defaultProxy'
уже определено с другой настройкой requirePermission . Обновления к этому
может произойти только в конфигурации
уровень, на котором это определено.
Кто-нибудь сталкивался с такой же проблемой? Можно ли молча использовать прокси-сервер по умолчанию из приложения WCF в режиме частичного доверия?
Я также попытался установить прокси программно, но безуспешно
System.Net.WebProxy proxy = new WebProxy();
proxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = proxy;
Атрибут useDefaultWebProxy атрибута wshttpbinding устанавливается с самого начала, но, похоже, не работает ни в среде с частичным, ни с полным доверием без правильно определенного раздела system.net.defaultProxy:
<binding name="WebBinding" useDefaultWebProxy="true">
Полагаю, я мог бы попросить своих клиентов обновить свои локальные файлы machine.config, чтобы добавить необходимый defaultProxy useDefaultCredentials = "true", но это определенно не облегчит развертывание.