问题标签 [faultexception]

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 投票
2 回答
3137 浏览

wcf - Creating generic WCF Fault Exception within Message Inspector, will not be caught

When creating a generic fault exception FaultException<MyWebServiceFaultDetail> and passing it back to the message inspector pipeline as a MessageFault, the client will not receive the generic fault in its catch (FaultException<MyWebServiceFaultDetail> ex) block, it is only caught within the catch (FaultException ex) block.

The MyWebServiceFaultDetail and IClientMessageInspector implication both live within the same project as the client WCF web reference in a single project MyProjects.MyWebService.

The WebService is called by another project which has a reference to the MyProjects.MyWebService project.

*Comments have been removed for brevity

The data contract:

The message inspector. I would just add that reply.Headers.Action is null when this method runs. Setting the action value on the call to CreateMessage() has had no affect. Values I have tried.

.CreateMessage(reply.Version, ex.CreateMessageFault(), "*");

.CreateMessage(reply.Version, ex.CreateMessageFault(), reply.Headers.Action);

.CreateMessage(reply.Version, ex.CreateMessageFault(), ex.Action);

The client code that is reciving the FaultException but not a FaultException<MyWebServiceFaultDetail>

0 投票
1 回答
75 浏览

c# - 如何仅指定要传递的某些 FaultExceptions?

我有一个 WCF 服务,并且有一个继承自 FaultException 的 CustomFaultException 类。

我设置了以下代码:

但它总是返回带有完整堆栈跟踪详细信息的异常。

如何配置或实现 WCF 服务以便只返回某些类型的异常,例如 CustomFaultException?

谢谢

0 投票
2 回答
607 浏览

wcf - WCF 的自定义异常

嘿,我正在使用 Oleg Sych 的解决方案通过 WCF 处理异常: 链接

一切都适用于已知异常(例如 InvalidOperationException 和 SystemException),但是当我尝试使用自己的自定义异常时,它不起作用,并且我收到以下 wcf 异常:“从管道读取错误:管道已结束。(109, 0x6d)"

这是我的自定义例外:

我究竟做错了什么?我错过了一个属性吗?

0 投票
0 回答
166 浏览

wcf - 在单个应用程序中托管服务和客户端时捕获 WCF 错误

我正在 Visual Studio 单元测试中试验 WCF 服务。客户端和服务都以编程方式配置。

目前我的代码如下所示:

如果我的 ServiceKnownTypesDiscoveryHelper 没有返回已知类型,我知道我的服务和客户端应该在 .NET 服务模型代码的深处抛出一些与序列化相关的东西(如果我修改它以返回我的 TestEntity 那么当然一切正常,没有任何问题)。

但是目前如果服务失败,我只会收到一些模糊的异常消息,例如:

在 using() 结束时,我得到

(这也很奇怪 - 如果 ServiceChannel 处于故障状态,为什么我什至不能处理它......)

如何捕捉导致服务或客户端失败的实际故障,而不是那些模糊的异常消息?

0 投票
1 回答
319 浏览

asp.net - WCF SOAP 错误类型不正确

首先,这是我的设置:

  • .Net 4.0 ASP.Net 应用程序
  • WCF 服务,带有 basicHttpBinding (soap 1.1)
  • 参考类是使用 svcutil 生成的,带有选项 /useSerializerForFaults; WSDL 定义所有操作,并提供指向 types.xsd 和 types_fault.xsd 文件的链接。仅供参考,WSD 和 XSD 文件对于许多应用程序都很常见,因此我无法修改它们(当然,除非存在一些重大的验证错误)

当我向客户端发送 SOAP 故障时,我的问题就出现了:对于故障详细信息,我无法访问代码中的正确类型,因此客户端无法处理此故障。

以下是 WSDL 的摘录,供您理解:

例如,当我发回一个响应(没有发生错误)时,我可以使用CreateScheduledWorkResponse元素,并正确填写它;但是当发生FaultException时,我只能发回CreateScheduledWorkFaultMessage(而不是 CreateScheduledWorkFault)。并且客户端无法处理此标签...

换句话说,代码中没有 CreateScheduledWorkFault 类型。

--> 我怀疑使用 svcutil 从 WSDL 和 XSD 生成代码时出现问题,因为我无法访问代码中所需的类型。

我以这种方式使用 svcutil:

svcutil /useSerializerForFaults CSW.wsdl CSW.xsd CSW_Fault.xsd

感谢您的帮助,如果您需要更多详细信息,请不要犹豫。

鲍里斯

0 投票
3 回答
7988 浏览

c# - WSE012:输入不是有效的 SOAP 消息,因为缺少以下信息:操作

我们正在尝试访问一个 web 服务(我相信它也是使用 WCF 编码的,但我无法控制它)并且我得到一个异常:

System.ServiceModel.FaultException:WSE012:输入不是有效的 SOAP 消息,因为缺少以下信息:操作。
服务器堆栈跟踪:

在 [0] 处重新抛出异常:

调用代码ProcessServiceName.Execute如下:

异常来自第二行,它直接调用服务引用自动生成的 WCF 代码,调用; 该方法只获取数据库对象并将其转换为 Web 服务所需的对象。System.ServiceModel.ClientBase<T>. Channel.CallServiceName(request)BuildServiceRequest

App.config(这在 Windows 服务中调用)的相关部分内容如下:

鉴于执行实际 web 服务工作的所有代码都来自 WCF,我不太明白问题出在哪里,但大概我需要一些稍微不同的东西App.config来防止它。

看过Google后,我没有找到任何帮助。在 StackOverflow 上,2011 年 9 月的这个未回答的 WCF 问题没有任何帮助;自定义绑定(2009 年 11 月的回答关于 WSE 的链接)没有帮助(我几乎不理解它们),2009 年 11 月的论坛回答和 2009 年10月的 ColdFusion 事情都无关。我看到的所有其他谷歌点击都是这些链接的副本。

任何帮助将不胜感激!


编辑以添加更多细节

Wiktor Zychla正确地指出问题可能(理论上)出在代理类中。但是,这些类是完全未经自动生成的类编辑的;例如:

所有其他代理类同样未从自动生成的代码中编辑(我在此处为空白和命名空间优化进行了编辑,以便它更适合 StackOverflow 中的屏幕;我为其添加using语句的三个命名空间在所有方面都是完全合格的类引用,就像我ClientName.ProjectName.Services.ServiceName在这些示例中编辑的命名空间一样。

添加WCF Message Logging后,我在消息日志中得到以下信息。(这是来自与上面代码不同的服务调用,但抛出相同的异常,部分原因是此服务调用更简单,部分原因是由于某种原因并非所有服务调用都被记录。我所做的唯一编辑是错误信息清晰易读,无需水平滚动。)

更多细节:ServiceNameSoap 接口

正如Wiktor Zychla所要求的,这里是ServiceNameSoap接口声明,来自自动生成的代码,再次编辑只是为了更好地适应屏幕(因此是using)并编辑客户机密名称:

0 投票
1 回答
1348 浏览

c# - Web服务调用上的FaultException错误

我创建了一个从数据库返回一些类别的网络服务。如果我与客户测试 WCF 提供的一切都是完美的。我开始建立一个客户端。我在我的 service 中添加了一个 service 引用http://localhost/Transaction/transaction.svc。我创建了客户端 Web 服务的新实例

我进入Object reference not set to an instance of an object第二行代码。端点名称正确。

知道为什么会出错吗?

PS:如果您需要更多代码,请告诉我要发布的内容。提前致谢。

编辑 :

该服务正在运行,我使用 WCFClient 进行测试,因此我的其余代码必须正确。

这是从数据库中获取项目的代码。我尝试使用发布的解决方案,但应用程序没有停止。

0 投票
1 回答
1002 浏览

wcf - serviceDebug includeExceptionDetailInFaults="true" - On live site

I am using a WCF service that sits under an ASP.NET website.

I want to keep service debug / exeption details on when I go live as it is convenient for catching errors in the global.asax file without having to throw fault exceptions.

Is there any reason why I should not do this. I have an error handler in place in the ASP.NET site.

0 投票
2 回答
1683 浏览

c# - Self-Hosting WCF and System.ServiceModel.FaultException

I have a simple WCF Service Library Project (call this Project W) with a handful of DLLs in directory X. I set the startup directory of W to X, all methods work correctly using WcfServiceHost in Visual Studio 2010.

I want to self-host W, so, I created a console Project (call this Project C), added a reference to W, set the startup directory of W to X, then have essentially the following main lines of code

When I now test the methods in W, I am getting System.ServiceModel.FaultException with {"The specified module could not be found. (Exception from HRESULT: 0x8007007E)"}.

What can this mean? How can I tell what module it is trying to load?

I am fairly new to both C# and WCF, any hint would be apprecited.

0 投票
2 回答
3544 浏览

c# - 捕获特定的 WCF FaultException

单层应用程序可以通过以下方式区分异常:

其中 ex 只是一个通用的例外。

当您迁移到 WCF 进行多层时,您将失去所有这些,您需要使用 FaultException 机制。

问题是我找不到任何方法来执行上述操作。

在我的客户端中,我想捕获 FaultException 类型,然后区分它们,例如:

有没有办法做到这一点?

否则我必须有许多 catch 构造——每种类型的 FaultException 一个。