从代理服务器后面添加Web服务引用
我正在使用vs2010。 在一个简单的控制台应用程序中,我尝试将服务引用添加到http://***/service1.asmx
,旧的asmx服务。 我的电脑在代理服务器后面,所以我收到一个错误:
“远程服务器返回了意外响应:(407)需要代理validation。”
当我使用wsdl工具我无法定义代理服务器端口号,我得到消息,服务器,例如10.0.0.3:80,没有响应,但我需要指定8080端口,不知道如何。 我怎么能创建一个参考?
在添加Web引用时,请查看以下链接以指定代理地址和服务器端口。
http://msdn.microsoft.com/en-us/library/bb628649.aspx
http://msdn.microsoft.com/en-us/library/03seed2h.aspx
添加对asmx的引用
-
右键单击控制台应用程序,然后选择添加服务引用。
-
单击高级按钮,然后在地址栏中输入asmx地址。 单击旁边的绿色按钮以发现asmx。
-
给它一个名字,然后点击添加参考。
更新:尝试更新web config / app config并添加;
我花了差不多50个小时才发现问题,在网上找不到这个简单的解决方案。
在Web.config中的“配置”部分下添加:
然后就像一个魅力!
您也可以从后面的代码中执行此操作:
serviceConnection = new WebService1(); serviceConnection.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy(); serviceConnection.Proxy.Credentials = CredentialCache.DefaultCredentials;
工作美丽!!
如果您需要从HTTPS位置使用,请添加以下配置:
添加参考:
确保您正在添加这样的参考。 您需要单击“ Add Service Reference
”,转到“ Advanced
”,最后单击“ Add Web Reference
”。
然后添加以下内容:
http://***/service1.asmx
对于port 8080
您使用:
http://***:8080/service1.asmx
为Web服务设置代理服务器:
若要确保Web Service正在使用Internet Explorer proxy
您可以将以下内容添加到客户端应用程序上的Web Service
对象中。
webService1.Proxy = WebRequest.GetSystemWebProxy();
您也可以手动设置代理:
webService1.Proxy = new WebProxy("hxxp://my-proxy-settings:8080/");
NTLM
如果您使用NTLM,您可能需要确保在客户端项目中使用默认凭据。 您可以通过在使用UseDefaultCredentials
设置为true
情况下创建Web服务时将其传入来轻松完成此操作。
public webService _webService = new webService() { UseDefaultCredentials = true };
您还可以为Web Service项目禁用NTLM身份validation。 您可以在Project Properties -> Web
下执行此操作。 如果取消选中此选项,则无需进行身份validation即可添加Web Service。
我无法使用vs2010自动创建Web服务引用。 我决定使用wsdl.exe工具,并在参数named / 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"();