我正在尝试构建一个与第三方SOAP Web服务交互的客户端。此Web服务需要WSE安全性。
我从我正在尝试与之交互的服务的WSDL中生成了一个旧学校.asmx Web服务。 WSDL中没有关于WSE Security的信息。
没有WSE安全,我可以很好地连接。但是,我将WSE Security添加到我的.asmx Web服务中。
我将以下代码添加到客户端以添加WSE用户名和密码
SoapContext requestContext = host.RequestSoapContext;
UsernameToken userToken = new UsernameToken("username", "password", PasswordOption.SendPlainText);
requestContext.Security.Tokens.Add(userToken);
但是,现在当我调用ProcessMessage方法时,我得到以下异常,但这并不能告诉我:
System.Web.Services.Protocols.SoapHeaderException:服务器不可用,请稍后再试
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)
在C:\ Projects \ Reynolds.Core \ Reynolds.Core \ Web References \ STARProxy \ Reference.cs:第105行中的Reynolds.Core.STARProxy.STARWebService.ProcessMessage(Payload& payload)
在Reynolds.Core.reynolds.SendGenericXMLRequest(XmlElement [] inputElements,String url,Guid [] guids)中的C:\ Projects \ Reynolds.Core \ Reynolds.Core \ Reynolds.cs:第191行
在Reynolds.Core.reynolds.SendGenericSingleXMLRequest(XmlElement inputXML,String url,Guid guid)中的C:\ Projects \ Reynolds.Core \ Reynolds.Core \ Reynolds.cs:第125行
在C:\ Projects \ Reynolds.Core \ Reynolds.Core \ Reynolds.cs:第120行中的Reynolds.Core.reynolds.SendGenericSingleXMLRequest(XmlElement inputXML,String url)
在C:\ Projects \ Reynolds.Core \ Reynolds.Core \ Reynolds.cs:第114行中的Reynolds.Core.reynolds.SendGenericSingleXMLRequest(XmlElement inputXML)
在C:\ Projects \ Reynolds.Testing \ Reynolds.Testing.GUI \ Form1.cs:第33行中的Reynolds.Testing.GUI.Form1.btnProcessMessage_Click(Object sender,EventArgs e)
这个例外对我来说并没有太多帮助。我尝试过各种谷歌搜索,但无法到达任何地方。
这是我第一次使用WSE,所以任何帮助都会受到赞赏。
答案 0 :(得分:-1)
异常说明Server unavailable, please try later
。这意味着您拥有第三方Web服务的错误URL或第三方服务器已关闭。