问题标签 [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.

0 投票
1 回答
12450 浏览

c# - 如何从 ASMX Web 服务返回错误?

我的 Web 服务方法返回一个集合对象,这将很好地序列化,这要归功于 C# Web 服务的工作方式!

但是,如果我的代码抛出一个未捕获的异常,我想改为返回一个自定义错误对象。

这可能使用 C# ASP.NET v2 吗?

例如,

正常操作应返回:

但是我想要的错误

0 投票
2 回答
1841 浏览

wcf - WCF EntLib 验证 - 更改默认 SOAP 错误原因文本

我正在为我的 WCF 服务使用企业库验证应用程序块。一切都很好,.Net 消费者可以捕获FaultException<ValidationFault>异常以获取人类可读的业务错误集合。但是,对于非 .Net 使用者,尤其是那些将要查看原始 SOAP 消息的使用者来说,它看起来并不那么好。SOAP 原因文本始终是“此故障的创建者没有指定原因。 ”这不是很有帮助,因为有一个原因,它在<Detail>元素下指定,如下面的故障消息示例所示。

有什么方法可以将文本“此故障的创建者没有指定原因。 ”更改为更有用的内容,例如“查看 ValidationFault 详细信息”?

0 投票
2 回答
759 浏览

.net - WCF 消息.IsFault

我正在尝试编写一个测试,需要创建一个属性设置为 true的Message对象。IsFault然而,这个属性只有一个吸气剂。有谁知道创建此属性设置为 true 的消息的最佳方法?

谢谢

0 投票
2 回答
2438 浏览

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 无关,但任何确认这一点并提供解决方法的文章都会非常有用。

大理

0 投票
1 回答
638 浏览

wcf - WCF 服务的构造函数是否应该使用错误来处理错误?

我有一个 wcf 服务。服务本身(继承ServiceContract的类)有一个有时会抛出异常的构造函数。如果服务失败,我想向用户显示一条消息。我应该像使用服务方法一样使用故障吗?

0 投票
2 回答
16070 浏览

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。我目前不知道如何解决这个问题,因为我使用的代码和设置看起来很简单。任何人都可以在这里指出我正确的方向吗?让我知道我是否可以发布更多详细信息..

这是返回的完整堆栈跟踪:

0 投票
2 回答
16620 浏览

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)

有人已经遇到过这个问题并解决了吗?

0 投票
1 回答
1558 浏览

c# - 在 C# 中检查 php soap 是否返回了 soapFault

我在检查 PHP Soap webservice 中 writen 的 SoapFault 响应时遇到问题。响应看起来像这样(默认 "throw new SoapFault("SOAP:CLIENT", "Bad login");"

C# 代码如下所示:

当登录/通过/apikey 等正常时,我得到了我需要的东西,但是当某事出错时,我无法显示正确的信息。

如何检查 SOAP 是否返回错误?我搜索了这个问题,但找不到有价值的信息。

不幸的是,我无法更改网络服务。

谢谢你的帮助。

0 投票
4 回答
53827 浏览

web-services - SOAP 错误或结果对象?

我正在和一位同事讨论这个问题,我们无法达成协议,所以我想听听你的想法。对此我有自己的看法,但我不会为你剧透。

我应该什么时候返回一个SOAP 错误,什么时候应该返回一个包含错误信息的结果对象?假设这是一个可以被各种系统(.NET、Java 等)使用的通用 Web 服务。结果对象将有一个 isError 标志、一个 errorType(类似于特定的异常类型)和一条消息。

需要考虑的几点:

  1. 数据验证错误是错误吗?
  2. 是否应该有错误(对于非常特殊的情况)和结果对象(对于“预期”错误)的组合?
  3. 您将如何对 SOAP 错误进行分组(关键 [空引用] 与验证 [邮政编码不正确])?
  4. 快速失败与必须记住检查错误
  5. 最佳实践、模式、标准等。

文章链接有效。尽管听起来我想要您的意见,但请坚持事实(x 更好,因为 y 和 z...)

0 投票
3 回答
3647 浏览

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 限定名称?