问题标签 [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.
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>
c# - 如何仅指定要传递的某些 FaultExceptions?
我有一个 WCF 服务,并且有一个继承自 FaultException 的 CustomFaultException 类。
我设置了以下代码:
但它总是返回带有完整堆栈跟踪详细信息的异常。
如何配置或实现 WCF 服务以便只返回某些类型的异常,例如 CustomFaultException?
谢谢
wcf - WCF 的自定义异常
嘿,我正在使用 Oleg Sych 的解决方案通过 WCF 处理异常: 链接
一切都适用于已知异常(例如 InvalidOperationException 和 SystemException),但是当我尝试使用自己的自定义异常时,它不起作用,并且我收到以下 wcf 异常:“从管道读取错误:管道已结束。(109, 0x6d)"
这是我的自定义例外:
我究竟做错了什么?我错过了一个属性吗?
wcf - 在单个应用程序中托管服务和客户端时捕获 WCF 错误
我正在 Visual Studio 单元测试中试验 WCF 服务。客户端和服务都以编程方式配置。
目前我的代码如下所示:
如果我的 ServiceKnownTypesDiscoveryHelper 没有返回已知类型,我知道我的服务和客户端应该在 .NET 服务模型代码的深处抛出一些与序列化相关的东西(如果我修改它以返回我的 TestEntity 那么当然一切正常,没有任何问题)。
但是目前如果服务失败,我只会收到一些模糊的异常消息,例如:
在 using() 结束时,我得到
(这也很奇怪 - 如果 ServiceChannel 处于故障状态,为什么我什至不能处理它......)
如何捕捉导致服务或客户端失败的实际故障,而不是那些模糊的异常消息?
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
感谢您的帮助,如果您需要更多详细信息,请不要犹豫。
鲍里斯
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
)并编辑客户机密名称:
c# - Web服务调用上的FaultException错误
我创建了一个从数据库返回一些类别的网络服务。如果我与客户测试 WCF 提供的一切都是完美的。我开始建立一个客户端。我在我的 service 中添加了一个 service 引用http://localhost/Transaction/transaction.svc
。我创建了客户端 Web 服务的新实例
我进入Object reference not set to an instance of an object
第二行代码。端点名称正确。
知道为什么会出错吗?
PS:如果您需要更多代码,请告诉我要发布的内容。提前致谢。
编辑 :
该服务正在运行,我使用 WCFClient 进行测试,因此我的其余代码必须正确。
这是从数据库中获取项目的代码。我尝试使用发布的解决方案,但应用程序没有停止。
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.
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.
c# - 捕获特定的 WCF FaultException
单层应用程序可以通过以下方式区分异常:
其中 ex 只是一个通用的例外。
当您迁移到 WCF 进行多层时,您将失去所有这些,您需要使用 FaultException 机制。
问题是我找不到任何方法来执行上述操作。
在我的客户端中,我想捕获 FaultException 类型,然后区分它们,例如:
有没有办法做到这一点?
否则我必须有许多 catch 构造——每种类型的 FaultException 一个。