【问题标题】:.NET Client consuming AXIS 1.4 SSL Webservice all exceptions "INTERNAL SERVER ERROR".NET 客户端使用 AXIS 1.4 SSL Webservice 所有异常“内部服务器错误”
【发布时间】:2011-10-06 20:20:11
【问题描述】:

我需要从 .NET 客户端通过 SSL 使用 AXIS 1.4 Web 服务。目前我们实现了 System.Net.WebClient,我们手动创建 XML 请求并将其上传到 Web 服务。这对于取回有效结果非常有效,但是如果发生异常 (java.rmi.RemoteException),我们只会取回“内部服务器错误”的 WebException。检查响应不会产生更多细节。

如果我们在 Visual Studio 2010 中将服务添加为 .NET 2.0 Web 参考 (SoapHttpClientProtocol),我们会收到所需的 java.rmi.RemoteException 以及纠正问题所需的所有详细信息。但是,来自有效请求的所有响应都是空的。

注意:其他(竞争对手的).NET 客户端(我们没有源代码)正在成功使用此服务。

重申:通过 WebClient 的有效请求接收有效的响应对象,但每个异常都是“内部服务器错误”,通过 Web 引用的有效请求接收空响应,但将准确显示所需的 java.rmi.RemoteException。

目标:有效响应以及完整的 java.rmi.RemoteExceptions(不是模糊的内部服务器错误),即使我可以抛出 SoapException,这将是一个巨大的改进。

IDE:Visual Studio 2010 SP1

操作系统:Windows 7

.NET:2.0/3.5/4.0(我尝试了所有三个版本,结果相同)

语言:C#

WebClient 示例代码:

var lvResult = "";

        try
        {
            var lvStr = "sample request";
            var client = new WebClient();
            client.Headers.Add("SOAPAction", "SampleRequest");

            lvResult = client.UploadString(cvURL, lvStr);
        }
        catch (Exception ex)
        {

        }

更新:更具体地说,如果抛出 Soap 异常,这不会是问题,但是抛出的唯一异常是“WebException”,它似乎无法让我访问故障字符串。以下是我从 AXIS 服务收到的原始肥皂故障:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
<soapenv:Fault>
  <faultcode>soapenv:Server.userException</faultcode>
  <faultstring>java.rmi.RemoteException: Error in posting Request: Code 02 - No UserId for this user name/password.</faultstring>
  <detail>
    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">xxxx</ns1:hostname>
  </detail>
</soapenv:Fault>

解决方案:我通过捕获 WebException 并获取异常响应的响应流找到了解决方法 -

    catch(WebException pvEx)
    {
        var lvResponseString = "";

        if (pvEx.Response != null)
        {
            using (var lvStreamReader = new StreamReader(pvEx.Response.GetResponseStream()))
            {
                //This string now contains the xml soap response
                lvResponseString = lvStreamReader.ReadToEnd(); 
            }
        }

    }

【问题讨论】:

  • 您能否分享 AXIS 1.4 Web 服务的 url,以便我们尝试为您找到可行的解决方案?

标签: .net wcf web-services ssl axis


【解决方案1】:

这是一篇关于您遇到的问题的帖子:http://bytes.com/topic/net/answers/427757-soap-faults

我认为您的 AXIS 服务正在返回 SOAPFAULT。您只需要知道如何在 .NET 客户端中处理它。这在这篇文章中有描述。

最好的问候, 马可·克伦韦克

【讨论】:

  • 这很接近,但是 AXIS 服务没有返回本文所述的自定义肥皂故障。真正的问题是没有抛出 Soap 异常。抛出的是 WebException。我将用更多细节更新我原来的问题。再次感谢马可。
  • 这部分正确,因为正在返回soap异常。但是,该帖子没有任何帮助。我已经在原始问题的底部发布了我的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多