0

我正在尝试使用 Visual Studio 在 ASP MVC 项目中生成的类来调用 Web 服务,这是我的代码:

var serviceClient = new UserSoapClient("UserSoap");

var isValid = serviceClient.CheckEmail(email);
ViewBag.ServiceOutput = isValid? "Email is valid" : "Email is not valid";
return View();

但是,消息超时,问题似乎在于 SoapClient 的请求标头未发送 User-Agent 属性,因为我尝试使用 SOAP UI 执行相同的服务,这是唯一的区别。有什么方法可以设置用户代理,因为我正在查看文档,它似乎不是很明显。

4

1 回答 1

0

我在尝试使用SoapClient使用服务时遇到了类似的问题。我能够通过浏览器从服务获得响应,但是当我在项目服务中执行代码时返回协议异常远程服务器返回错误:(502) 网关错误。信息。

经过几个小时的跟踪,我意识到异常是由用户代理定义引起的。我试图将用户代理添加到 Soap 请求标头,但没有办法。您不能将用户代理添加到注册为服务参考的 Soap 请求中。但是可以将用户代理标头定义为注册为 Web 服务参考的请求。

我的解决方案是:

  1. 从项目中删除服务引用
  2. 从添加服务参考窗口的高级菜单中添加与 Web 参考相同的参考
  3. 创建一个新对象并定义 UserAgent 属性,如下所示。

    var svc = new ServiceReference.QueryService();
    svc.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36";
    
于 2014-02-12T08:27:00.160 回答