new SoapException(errMsg, SoapException.ServerFaultCode) : new Exception(errMsg); } - 客户端调用: 可以看到,如果WS抛出的是Exception,客户端得到的ex.Message就是含有“杂质”的,所以得到干净异常消息的要诀之一就是: WS要抛出SoapException异常。 这就是为什么说你要有对WS的编写权,因为别人的WS如果抛的不是SoapException,你就会得到先天含有杂质的ex.Message,需要经过一定加工才行。 刚刚说的是要诀之一,那就是说即便WS抛的是SoapException,也有可能得到不干净的ex.Message,如图: ? 所以,总结一下,以我目前所知,要想在客户端得到干净的ex.Message,要诀有二: 1、WS要把异常封装为SoapException再抛出 2、WS的【自定义错误消息】不能设为Off
先看示例:
- WS方法:
///
Search&operator=http://127.0.0.1:7001发现当内网存在该资源的时候,其特征是 weblogic.uddi.client.structures.exception.XML_SoapException web service has deployed without error.而不存在该资源的时候,其特征是 weblogic.uddi.client.structures.exception.XML_SoapException
因此无法处理进行下去 (2)服务端对未捕获异常的处理 在使用WebService类型和WebMethod特性创建Web Service的情况下,服务器端的异常都会被捕捉,并且所有异常都会被放入到SoapException 我们可以在服务端代码中直接使用SoapException异常,通过设置其属性来告知客户端: ① Message:原始异常的Message属性 ② Code:服务器异常码 ③ Actor:Web Service方法的URL ④ Detail:空引用,但有一个空的详细信息元素存在于故障元素之中 服务端会把SoapException放入Fault节点之中并返回给客户端,以此来告知服务端发生的异常 (3)客户端代理类对fault节点的处理 如果使用.NET自动生成的Web Service代理类,那么它将能够自动地识别fault节点,并且还原为SoapException异常。 / 这里异常将会被代理类抛出 proxy.HelloException(); } catch (SoapException
RefreshFailedException, RemarshalException, SAXException, ScriptException, ServerNotActiveException, SOAPException
base.OnStartProcessingRequest(args); 12: } 13: else 14: { 15: throw new System.Web.Services.Protocols.SoapException
the result return soapResult.getValue().toString(); } } catch (SOAPException
异常 ASP.NET WebService 通过 Fault XML 元素来传递异常信息,客户端代理对象会生成一个 SoapException 的异常,并使用 Fault XML 信息填充其相关属性,诸如 { throw new Exception("aaa..."); } catch (Exception e) { throw new SoapException WebService ws = new WebService(); try { ws.TestException(); } catch (System.Web.Services.Protocols.SoapException
connection; public static YSOAPConnection open(SOAPConnectionFactory soapConnectionFactory) throws SOAPException return ySoapConnection; } public SOAPMessage call(SOAPMessage request, Object to) throws SOAPException { return connection.call(request, to); } @Override public void close() throws SOAPException
RefreshFailedException, RemarshalException, RuntimeException, SAXException, ScriptException, ServerNotActiveException, SOAPException
uddiexplorer/SearchPublicRegistries.jsp(这里有参数传入的是url) 若报错显示 weblogic.uddi.client.structures.exception.XML_SoapException
=15, verify=False) result0 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException