Mic*_*hel 2 c# wcf wcf-security
我已经创建了一个WCF服务.我称之为:
ServiceClient client = new ServiceClient ();
client.MyMethod();
Run Code Online (Sandbox Code Playgroud)
到目前为止在我的机器上非常好.
现在我已经将它部署在我们的DMZ中(无论是什么),我可以通过外部URL调用它(因此来自我的机器的请求转到Internet然后转到我们的数据中心).
但是,我们通过代理连接到Internet.我不确定它是如何工作的,但如果我想访问Stack Overflow站点,我必须在Internet Explorer的连接,LAN设置部分输入代理服务器.
当我不更改代码时,我收到此错误:
远程服务器返回意外响应:(407)需要代理身份验证(ISA Server需要授权才能完成请求.拒绝访问Web代理筛选器.).
谷歌搜索后,我发现了这个代码,但它给我留下了同样的错误.
var b = client.Endpoint.Binding as System.ServiceModel.WSHttpBinding;
b.ProxyAddress = new Uri("http://OURADDRESS.intern:8080");
b.BypassProxyOnLocal = false;
b.UseDefaultWebProxy = false;
client.ClientCredentials.UserName.UserName = @"DOMAIN\USERNAME";
client.ClientCredentials.UserName.Password = "myverysecretpassword";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用默认代理就足够了:
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
在绑定中,您必须仅确保使用默认代理(默认情况下应启用):
b.UseDefaultWebProxy = true;
Run Code Online (Sandbox Code Playgroud)
如果手动设置凭据,我相信您的代理需要Windows凭据,因此应该使用它:
client.ClientCredentials.Windows.ClientCredential.UserName = @"DOMAIN\USERNAME";
client.ClientCredentials.Windows.ClientCredential.Password = "myverysecretpassword";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10343 次 |
| 最近记录: |