NetworkCredential credential1 = new NetworkCredential("uid", "pwd", "domain"); Proxy = new WebProxy("http://proxy:port", true); Proxy.Credentials = credential1; Url = "http://api.google.com/search/beta2";
请问是在Reference.cs里边修改么?我在这个方法里边加上了 public GoogleSearchService() { NetworkCredential credential1 = new NetworkCredential(); Proxy = new WebProxy("http://203.113.132.50:8080", true); Proxy.Credentials = credential1; this.Url = "http://api.google.com/search/beta2"; }203.113.132.50 8080 是我找到的一个匿名代理,还是出不去。。
前提(情景描述) 在局域网内,所有机器通过一个代理服务器上网(能通过HTTP方式访问网站),并且,所有的机器已经加入了一个域中。 代理服务器对所有请求连接到Internet上的请求都进行认证,如果不是域内指定的用户则不允许访问。 机器A上有一asp.net应用程序需要通过webservice远程访问位于Internet上的一台服务器B。2. 出错症状(附LOG日志)远程调用webservice失败。出现如下错误日志:System.Net.WebException: 请求因 HTTP 状态 407 失败:Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. )at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)3. 原因分析从错误日志中可以看到,提示的是“ISA 服务器需要认证访问web代理服务被禁止”,这里说明在调用webservice时,使用的用户帐号不能被代理服务器识别并认证,而asp.net程序一般总是通过aspnet用户进行一切资源访问,问题就出在这里,当ASP.NET程序通过访问webservice的时候是使用aspnet帐户的,而代理服务器上一般不会有这个用户的,所以就会出现禁止访问的问题。4. 解决方法通过上面的错误分析可以看到,只要程序在请求连接webservice的时候提交到代理服务器上的是正确的用户信息即可(比如可以是机器A的系统管理员帐号)。可以在代码中加入这样的信息(以下是简单的示例代码,具体的应用可以修改)://获取webservice的urlthis.Url =http://xxx.xxx.xxx.xxx/xxx.asmx;//设置代理服务器System.Net.IWebProxy proxyObject = new System.Net.WebProxy("xxx.xxx.xxx.xxx:80", true);//加入身份验证的凭据,可以是当前机器的系统管理员帐号和密码proxyObject.Credentials = new NetworkCredential("username","password","domain");this.Proxy = proxyObject;当然,这里的身份验证代码可以写的更灵活一点,可以将这个用户名和密码写到一个配置文件里面进行配置。
http://sss.asmx?WSDL然后
在生成的代理类构造函数中添加具体的代理信息
或者在Client使用代理类时添加代理信息
Proxy = new WebProxy("http://proxy:port", true);
Proxy.Credentials = credential1;
Url = "http://api.google.com/search/beta2";
NetworkCredential credential1 = new NetworkCredential();
Proxy = new WebProxy("http://203.113.132.50:8080", true);
Proxy.Credentials = credential1; this.Url = "http://api.google.com/search/beta2";
}203.113.132.50 8080 是我找到的一个匿名代理,还是出不去。。