2009-02-18 3 views
2

У меня есть приложение WCF, развернутое с помощью clickonce. Он подключается к серверу с помощью протокола HTTPS, и все работает отличноКак я могу использовать раздел system.net моего app.config в частичной среде доверия?

Я использую прокси-сервер по умолчанию, когда это необходимо, благодаря следующему коду:

<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"> 

Установка этого атрибута кинуть системы. Configuration.ConfigurationException со следующим сообщением об ошибке:

Sec или имя группы '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 = «истинный», но это, безусловно, не собирается облегчать развертывание.

ответ

1

Я считаю, что это известная проблема, возможно связанная с транспортом частного ключа. Существует запись 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

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