.NET 客户端使用 AXIS 1.4 SSL Webservice 所有异常 "INTERNAL SERVER ERROR"

标签 .net wcf web-services ssl axis

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

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

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

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

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

集成环境:Visual Studio 2010 SP1

操作系统:Windows 7

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

语言:C#

示例网络客户端代码:

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(); 
            }
        }

    }

最佳答案

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

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

最好的问候, 马可·克鲁维克

关于.NET 客户端使用 AXIS 1.4 SSL Webservice 所有异常 "INTERNAL SERVER ERROR",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679997/

相关文章:

c# - WCF 连接重置 : server reboot needed

c# - 将派生类作为基类传递给 Web 服务方法

javascript - 如何处理 asp.net Httphandler 中的错误?

.net - 在 c# .net WebBrowser 组件中出现 javascript 错误

.net - .NET 企业库

c# - 需要全面的 C# System.Threading.Tasks 示例

c# - 从 WCF 服务返回不同的对象(列表或错误类)

java - Spring-ws -来自tomcat 6的问题请求Web服务

java - extended server_name (SNI Extension) 不是用jdk1.8.0发送而是用jdk1.7.0发送

c# - 如何使用控件数组在 C# 中获取给定对象的数组索引?