2009-02-18 29 views
2

我有一个使用clickonce部署的WCF应用程序。 它使用HTTPS连接到我的服务器,和一切工作正常如何在部分信任环境中使用我的app.config的system.net部分?

我使用默认的代理需要感谢以下代码时:

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

的WsHttpBinding的的useDefaultWebProxy属性是直接从一开始就确定,但似乎并没有工作,无论是在部分或完全信任的环境,没有正确定义的“system.net.defaultProxy”部分:

<binding name="WebBinding" useDefaultWebProxy="true"> 

我想我可以问我的客户更新其本地的machine.config文件添加所需的defaultProxy useDefaultCredentials =“真”,但它肯定不会缓解部署。

回答

1

我认为这是一个已知问题,可能与私钥传输有关。有一个MS连接入口的位置:

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

我希望我理解正确的问题。如果你的问题是这个bug的结果,那么看起来目前还没有修复ETA的问题。但是,可能存在与手动请求凭据相关的解决方法。显然这并不理想,但在部署到生产系统之前它可能会给您另一个选择。

有在这里的MSDN论坛进一步讨论:

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

0

另外,如果在企业环境中工作,你可以尝试找到所需的权限(S),让您的应用程序的工作。所以不是完全信任的,而是更具体的代码访问安全策略。然后通过在企业级/用户级设置的组策略设置该策略。

相关问题