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>
フルトラストモードでは、すべてが正常に機能します
これで、セキュリティ設定を部分信頼に設定した場合、プロキシが含まれていなくても正常に機能しますが、企業環境でソフトウェアを起動しようとすると、プロキシは自動検出されなくなります。
私の理解から:
次のようにrequirePermission属性が設定されていない限り、configSectionsは部分信頼環境では解析されなくなります。
<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"を追加するように依頼することはできると思いますが、展開が容易になるわけではありません。