Как я могу использовать раздел system.net моего app.config в среде с частичным доверием? - PullRequest
2 голосов
/ 18 февраля 2009

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

Ответы [ 2 ]

1 голос
/ 06 марта 2009

Я полагаю, что это известная проблема, возможно связанная с передачей закрытого ключа. Здесь есть запись MS Connect:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354646

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

Здесь есть дополнительная дискуссия на форумах MSDN:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c19b726b-573b-4157-91fd-051724f04180/

0 голосов
/ 06 марта 2009

В качестве альтернативы, если вы работаете в корпоративной среде, вы можете попытаться найти необходимые разрешения для работы вашего приложения. Так что не полное доверие, а более точная политика безопасности доступа к коду. А затем настройте эту политику с помощью групповой политики, установленной на уровне предприятия / уровне пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...