我正在使用vs2010。在一个简单的控制台应用程序中,我尝试添加对http://***/service1.asmx
旧 asmx 服务的服务引用。我的电脑在代理服务器后面,所以我收到一个错误:
“远程服务器返回了意外响应:(407) 需要代理身份验证。”
当我使用 wsdl 工具时,我无法定义代理服务器端口号,并且我收到该服务器的消息,例如 10.0.0.3:80,没有响应,但我需要指定 8080 端口并且不知道如何。我如何创建参考?
我正在使用vs2010。在一个简单的控制台应用程序中,我尝试添加对http://***/service1.asmx
旧 asmx 服务的服务引用。我的电脑在代理服务器后面,所以我收到一个错误:
“远程服务器返回了意外响应:(407) 需要代理身份验证。”
当我使用 wsdl 工具时,我无法定义代理服务器端口号,并且我收到该服务器的消息,例如 10.0.0.3:80,没有响应,但我需要指定 8080 端口并且不知道如何。我如何创建参考?
我花了将近 50 个小时来寻找问题,在网络上的任何地方都找不到这个简单的解决方案。
在 Web.config 的“配置”部分下添加:
<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 的引用
右键单击控制台应用程序并选择添加服务引用。
点击高级按钮,在地址栏中输入asmx地址。单击它旁边的绿色按钮以发现 asmx。
给它一个名字,然后点击添加参考。
更新:尝试更新网络配置/应用配置并添加;
<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,您可能需要确保在您的客户端项目上也使用默认凭据。UseDefaultCredentials
您可以通过在使用set to创建 Web 服务时传入它来轻松地做到这一点true
。
public webService _webService = new webService() { UseDefaultCredentials = true };
您还可以为您的 Web 服务项目禁用 NTLM 身份验证。您可以在Project Properties -> Web
. 如果取消选中此选项,您应该能够添加 Web 服务而无需进行身份验证。
我无法使用 vs2010 自动创建 Web 服务引用。我决定使用 wsdl.exe 工具,并在名为 /parameters 的参数中传递带有代理服务器凭据的 xml 文件
wsdl.exe http://service uri/service1.asmx /parameters: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"();