我有一个使用 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>
在完全信任模式下,一切正常
现在,如果我将我的安全设置设置为部分信任,如果不涉及代理,它确实可以正常工作,但如果我尝试在公司环境中启动我的软件,则不再自动检测到代理。
据我了解:
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;
wshttpbinding 的 useDefaultWebProxy 属性从一开始就直接设置,但在部分或完全信任环境中,如果没有正确定义 'system.net.defaultProxy' 部分,似乎不起作用:
<binding name="WebBinding" useDefaultWebProxy="true">
我想我可以要求我的客户更新他们的本地 machine.config 文件以添加所需的 defaultProxy useDefaultCredentials="true",但这绝对不会简化部署。