从代理服务器后面添加web服务引用

本文关键字:web 服务 引用 添加 代理服务器 | 更新日期: 2023-09-27 18:08:24

我使用vs2010。在一个简单的控制台应用程序中,我尝试添加一个服务引用到http://***/service1.asmx,旧的asmx服务。我的电脑在代理服务器后面,所以我得到一个错误:

"远程服务器返回了一个意外的响应:(407)代理认证要求。"

当我使用wsdl工具时,我无法定义代理服务器端口号,并且我得到服务器的消息,例如10.0.0.3:80,没有响应,但我需要指定8080端口,不知道如何。我如何创建一个引用?

从代理服务器后面添加web服务引用

我花了将近50个小时才找到这个问题,在网上找不到这么简单的解决方案。

在Web的"配置"部分下。添加这个:

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>

那么工作就像一个魅力!

您也可以从后面的代码中执行:

serviceConnection = new WebService1();
serviceConnection.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
serviceConnection.Proxy.Credentials = CredentialCache.DefaultCredentials; 

工作漂亮! !

如果您需要从HTTPS位置使用,请添加以下配置:

<message clientCredentialType="Certificate" algorithmSuite="Default" />

查看下面的链接,以便在添加web引用时指定代理地址和服务器端口。

http://msdn.microsoft.com/en-us/library/bb628649.aspx

http://msdn.microsoft.com/en-us/library/03seed2h.aspx

添加对asmx的引用

  1. 右键单击控制台应用程序,选择添加服务引用

  2. 单击高级按钮,在地址栏中输入asmx地址。单击它旁边的绿色按钮来发现asmx。

  3. 给它一个名字并点击add ref

更新:尝试更新web配置/app配置和add;

<system.net>
<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]"  bypassonlocal="True"/>
</defaultProxy>
</system.net>

添加参考:

确保像这样添加引用。点击"Add Service Reference",再点击"Advanced",最后点击"Add Web Reference"。

然后添加以下内容:

http://***/service1.asmx

对于port 8080,您可以使用:

http://***:8080/service1.asmx

设置Web服务代理:

要确保Web服务正在使用您的Internet Explorer proxy,您可以将以下内容添加到客户端应用程序上的Web Service对象。

webService1.Proxy = WebRequest.GetSystemWebProxy();

您也可以手动设置代理:

webService1.Proxy = new WebProxy("hxxp://my-proxy-settings:8080/");

NTLM

如果您使用NTLM,则可能需要确保在客户端项目上也使用默认凭据。您可以通过在创建Web服务时将UseDefaultCredentials设置为true来轻松地完成此操作。

public webService _webService = new webService() { UseDefaultCredentials = true };

您还可以为您的Web服务项目禁用NTLM身份验证。您可以在Project Properties -> Web下执行此操作。如果您取消选中此选项,您应该能够添加Web服务而不必进行身份验证。

http://msdn.microsoft.com/en-us/library/aa378749.aspx

我不能使用vs2010自动创建web服务引用。我决定使用wsdl.exe工具,并在参数命名/参数传递带有代理服务器凭据的xml文件

wsdl.exe http://service uri/service1.asmx/参数:c: ' temp ' wsdlparameters.xml

WSDL.exe生成一个文件Service1.cs(默认)。我将这个文件添加到我的项目中,并像这样使用它:

WebProxy wp = new WebProxy(@"YourProxyServer",ProxyPort);
wp.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
Service1 service1 = new Service1();
service1.Proxy = wp;
service1."YourServiceMethod"();