Nik*_*ita 9 c# asmx proxy-authentication
我正在使用vs2010.在一个简单的控制台应用程序中,我尝试添加http://***/service1.asmx旧的asmx服务的服务引用.我的电脑在代理服务器后面,所以我收到一个错误:
"远程服务器返回了意外响应:(407)需要代理验证."
当我使用wsdl工具我无法定义代理服务器端口号,我得到消息,服务器,例如10.0.0.3:80,没有响应,但我需要指定8080端口,不知道如何.我怎么能创建一个参考?
Isr*_*ies 27
我花了差不多50个小时才发现问题,在网上找不到这个简单的解决方案.
在Web.config中的"配置"部分下添加:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
然后就像一个魅力!
您也可以从后面的代码中执行此操作:
serviceConnection = new WebService1();
serviceConnection.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
serviceConnection.Proxy.Credentials = CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)
工作美丽!!
如果您需要从HTTPS位置使用,请添加以下配置:
<message clientCredentialType="Certificate" algorithmSuite="Default" />
Run Code Online (Sandbox Code Playgroud)
在添加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并添加;
<system.net>
<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]" bypassonlocal="True"/>
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)