问题标签 [soapfault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何从 ASMX Web 服务返回错误?
我的 Web 服务方法返回一个集合对象,这将很好地序列化,这要归功于 C# Web 服务的工作方式!
但是,如果我的代码抛出一个未捕获的异常,我想改为返回一个自定义错误对象。
这可能使用 C# ASP.NET v2 吗?
例如,
正常操作应返回:
但是我想要的错误
wcf - WCF EntLib 验证 - 更改默认 SOAP 错误原因文本
我正在为我的 WCF 服务使用企业库验证应用程序块。一切都很好,.Net 消费者可以捕获FaultException<ValidationFault>
异常以获取人类可读的业务错误集合。但是,对于非 .Net 使用者,尤其是那些将要查看原始 SOAP 消息的使用者来说,它看起来并不那么好。SOAP 原因文本始终是“此故障的创建者没有指定原因。 ”这不是很有帮助,因为有一个原因,它在<Detail>
元素下指定,如下面的故障消息示例所示。
有什么方法可以将文本“此故障的创建者没有指定原因。 ”更改为更有用的内容,例如“查看 ValidationFault 详细信息”?
.net - WCF 消息.IsFault
我正在尝试编写一个测试,需要创建一个属性设置为 true的Message
对象。IsFault
然而,这个属性只有一个吸气剂。有谁知道创建此属性设置为 true 的消息的最佳方法?
谢谢
wcf - WCF 用户名身份验证和故障合同
我有一个 WCF 服务配置为通过 System.IdentityModel.Selectors.UserNamePasswordValidator 类的重写 Validate() 方法使用自定义用户名验证。
合同的所有方法都已使用 FaultContractAttribute 进行修饰,以将自定义 SOAP 错误指定为可返回。
当抛出 FaultException<T>(其中 T 是 FaultContractAttribute 中指定的类型)时,一切都按预期运行,并且我在响应 XML 中得到了自定义错误。
但是,如果我尝试在用户名身份验证类的重写 Validate() 方法中抛出 FaultException<T>,我会得到一个通用 SOAP 错误,原因如下:
“此故障的创建者没有指定原因。”
但是,如果我更改代码以引发一般 SOAP 错误,如下所示:
throw new FaultException("Authentication failed.");
我至少会得到“身份验证失败”。在原因元素中。
我的问题是:
- 如果在 Validate() 中抛出 FaultException<T> 异常,为什么它们在服务实现中的处理方式不同?
- Validate() 方法中抛出的异常是否符合合同方法上指定的 FaultContractAttribute?
非常感谢任何帮助。我自己的猜测是,身份验证发生在消息与合同的任何方法相关联之前,因此与 FaultContractAttribute 无关,但任何确认这一点并提供解决方法的文章都会非常有用。
大理
wcf - WCF 服务的构造函数是否应该使用错误来处理错误?
我有一个 wcf 服务。服务本身(继承ServiceContract的类)有一个有时会抛出异常的构造函数。如果服务失败,我想向用户显示一条消息。我应该像使用服务方法一样使用故障吗?
java - 使用 CXF 捕获 Web 服务异常:NoClassDefFoundError: SOAPFaultBuilder
一段时间以来,我一直在使用 Apache CXF wsdl2java 生成的代码从 web 服务调用方法,到目前为止它工作正常。合法地抛出一个肥皂异常,CXF 提出以下错误消息:
无法初始化类 com.sun.xml.internal.ws.fault.SOAPFaultBuilder
我正在使用 Ubuntu 9.04、OpenJDK (IcedTea6 1.4.1) 6b14-1.1.1-0ubuntu11、Maven2 和 CXF 2.2.3。我目前不知道如何解决这个问题,因为我使用的代码和设置看起来很简单。任何人都可以在这里指出我正确的方向吗?让我知道我是否可以发布更多详细信息..
这是返回的完整堆栈跟踪:
wsdl2java - Apache Axis WSDL2Java 错误 - 缺失元素
我们正在我们的应用程序中集成第三方 SOAP Web 服务。WSDL 与 SOAPUI 工具一起使用,其中示例请求和响应运行良好。
当我们尝试与 Apache Axis 1.3 集成时,我们尝试了 WSDL2JAVA 与 WSDL。我们收到以下错误
java.io.IOException:错误:在操作“serviceFault”中,在 org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858) 的绑定 saveRegistration 中缺少元素 inFault “serviceFault” .wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549) 在 org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) 在 org.apache.axis.wsdl.symbolTable.SymbolTable.add (SymbolTable.java:543) 在 org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) 在 org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) 在org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) at java.lang.Thread.run(Unknown Source)
有人已经遇到过这个问题并解决了吗?
c# - 在 C# 中检查 php soap 是否返回了 soapFault
我在检查 PHP Soap webservice 中 writen 的 SoapFault 响应时遇到问题。响应看起来像这样(默认 "throw new SoapFault("SOAP:CLIENT", "Bad login");"
C# 代码如下所示:
当登录/通过/apikey 等正常时,我得到了我需要的东西,但是当某事出错时,我无法显示正确的信息。
如何检查 SOAP 是否返回错误?我搜索了这个问题,但找不到有价值的信息。
不幸的是,我无法更改网络服务。
谢谢你的帮助。
web-services - SOAP 错误或结果对象?
我正在和一位同事讨论这个问题,我们无法达成协议,所以我想听听你的想法。对此我有自己的看法,但我不会为你剧透。
我应该什么时候返回一个SOAP 错误,什么时候应该返回一个包含错误信息的结果对象?假设这是一个可以被各种系统(.NET、Java 等)使用的通用 Web 服务。结果对象将有一个 isError 标志、一个 errorType(类似于特定的异常类型)和一条消息。
需要考虑的几点:
- 数据验证错误是错误吗?
- 是否应该有错误(对于非常特殊的情况)和结果对象(对于“预期”错误)的组合?
- 您将如何对 SOAP 错误进行分组(关键 [空引用] 与验证 [邮政编码不正确])?
- 快速失败与必须记住检查错误
- 最佳实践、模式、标准等。
文章链接有效。尽管听起来我想要您的意见,但请坚持事实(x 更好,因为 y 和 z...)
asp.net - ASP.Net Web 服务 - 将详细信息元素添加到适用于 SOAP 1.1 和 SOAP 1.2 的 SOAP 错误响应的正确方法是什么?
ASP.Net 2.0 Web 服务自动创建 SOAP 1.1 和 SOAP 1.2 绑定。但是,我们的 Web 服务具有 SOAP 扩展和自定义异常处理,它们假设仅使用 SOAP 1.1 绑定(例如,SOAP 扩展使用 HTTP SOAPAction 标头来控制行为)。
我希望更正做出这些假设的代码,并使其与 SOAP 1.1 或 SOAP 1.2 一起正常工作。我在为我们的 SOAP 错误生成元素时遇到了一些问题。
考虑以下 Web 方法实现:
通过 SOAP 1.1 调用它会产生以下结果:
通过 SOAP 1.2 调用会产生以下结果:
在这两种情况下,都有一个空的 detail 元素作为元素的子<soap:Fault>
元素,但它具有不同的限定名称,要么<detail>
要么<soap:Detail>
。
现在考虑以下代码,它尝试使用详细元素创建 SOAPException。
SOAP 1.1 响应是:
SOAP 1.2 响应是:
SOAP 1.2 响应现在具有错误的详细信息元素限定名称。它应该<soap:Detail>
,但仅仅是<detail>
,与 SOAP 1.1 响应相同。
似乎 ASP.Net 2.0 框架在将 SOAPException 转换为 SOAP 版本的适当形式方面做了很多工作,但忽略了正确处理 detail 元素。此外,它们似乎没有像使用 SoapException.DetailElementName 属性那样为详细元素公开正确的 SOAP 1.2 限定名称。
那么,将详细元素添加到适用于 SOAP 1.1 和 SOAP 1.2 的 SOAP 错误响应的正确方法是什么?我是否需要自己检测 SOAP 版本并为 detail 元素硬编码 SOAP 1.2 限定名称?