【发布时间】:2009-02-18 12:22:37
【问题描述】:
我有一个使用 clickonce 部署的 WCF 应用程序。 它使用 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>
在完全信任模式下,一切正常
现在,如果我将安全设置设置为部分信任,如果不涉及代理,它确实可以正常工作,但如果我尝试在公司环境中启动我的软件,代理 不再自动检测到。
据我了解:
在部分信任环境中不再解析 configSection,除非设置了 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;
wshttpbinding 的 useDefaultWebProxy 属性是从一开始就直接设置的,但在部分或完全信任环境中,如果没有正确定义“system.net.defaultProxy”部分,似乎不起作用:
<binding name="WebBinding" useDefaultWebProxy="true">
我想我可以要求我的客户更新他们的本地 machine.config 文件以添加所需的 defaultProxy useDefaultCredentials="true",但这绝对不会简化部署。
【问题讨论】:
标签: .net wcf proxy code-access-security partial-trust