У меня есть приложение 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", но это определенно не упростит развертывание.