问题标签 [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 投票
1 回答
142 浏览

xml - FaultException 并且没有 WCF 服务

System.ServiceModel.FaultException在我的 Windows Phone 应用程序中收到以下内容。对该异常的一些研究表明它与 SOAP 错误有关。这很奇怪,因为我没有打任何肥皂电话,尤其是在出现异常时。

它似乎在我在页面之间导航后出现,并且在我尝试使用该应用程序时变得越来越糟。

我有两个 Webclient 调用,但大多数时候通过本地缓存数据避免了这些调用(因此我可以将它们注释掉并仍然使用我的应用程序),但我仍然收到这些错误。

我似乎无法在网上找到任何有用的资源,所以希望有人知道这一点以及如何解决它。即使我能够吞下异常,这对今天也会有所帮助。

现在我正在输入这个,我想知道它是否与我缓存在隔离存储中的 xml 数据中的 xmlnamespace 有关。有人听说过这件事吗?

更新:
好吧,当我不加载 xml 并对其进行反序列化时,我没有得到 FaultExceptions。也许如果我能摆脱命名空间......

0 投票
1 回答
238 浏览

workflow - 在 WF 4 中捕获特定的 FaultExceptions

我正在尝试在 Workflow 4 中设置一个 try catch 块,该块试图调用另一个服务。该服务可能会抛出一些特定的、通用类型的错误异常:

FaultException<MySpecificFault>

在 try catch 中,我希望有一系列的 catch 来处理每个个体。但是,每当尝试捕获特定类型的错误时,就像我上面所说的那样,它在所有情况下都会落入块末尾的通用 FaultException 中。

有什么我想念的吗。这可以在WF4中做到吗?

0 投票
0 回答
337 浏览

c# - FaultException WebService c#在服务器上创建文件时

我的网络服务有问题(没有 WCF)。

所以,我的服务器上存储了一个 web 服务(windows 2008 R2)。我有一个用 XmlTextWritter 创建 XML 文件的功能。当我在服务器的浏览器中启动 web 服务并测试我的功能时,一切运行正常。但是当我用我的客户端应用程序(我的计算机上的 WPF,而不是服务器上的 WPF)调用这个函数时,我有这个错误:

XmlTextWritter 必须创建该文件,但它说它没有找到它。这个错误发生在我使用客户端时。

这是我的函数 GenerateXML 其中变量“路径”是世界的名称(函数的字符串参数):

有人知道为什么服务器端,全部运行,客户端,脚本无法创建/找到文件?

0 投票
2 回答
829 浏览

wcf - 使用 WCF 和业务逻辑层方案处理异常

我的服务只是调用放置整个业务逻辑的 BusinessLogicLayer 方法。我想知道处理 BL 引发的异常的最佳做法是什么?(不仅是致命异常,还有“逻辑”ApplicationExceptions,如我的 BL 在找不到用户时抛出的 UserNotFoundException)。

我应该在哪里将这些异常转换为客户将看到的 FaultExceptions?

我应该从 BL 抛出我的业务异常,然后将它们捕获到服务调用中并转换为 FaultException 并返回给客户端吗?或者 BL 应该引发已经“客户友好”的 FaultExceptions?

提前致谢 :)

0 投票
0 回答
778 浏览

c# - 当我抛出 FaultException 时 WCF 通道重试 5 次

我正在使用DuplexChannelFactory而不是生成的代理创建 WCF 客户端通道。

对于一个特定的方法,我FaultException<MyFault>在服务器端抛出一个已知的。我已根据需要标记了服务接口[FaultContract(typeof(MyFault))]

在客户端,我发现了这个FaultException<MyFault>并显示了一个错误。

所有这些工作都很好,但由于某种原因,WCF 在将控制权返回给我的客户端代码之前重试了服务调用 5 次。这会导致客户端出现明显的延迟。

在继续执行我的代码的下一行之前,调试器在我的客户端代码中的服务调用中中断了 5 次。我无法进入它,但调用堆栈显示异常在 WCF 深处引发。

服务端的断点只触发一次。

一旦控制权返回给我,通道就不会出现故障。

调试器输出显示:

这是正常行为吗?当我返回一个已知的预期错误时,为什么 WCF 会重试?

0 投票
2 回答
8369 浏览

c# - 抛出故障异常来自 WCF 服务方法

我正在学习 WCF,目前专注于故障章节。

据我了解,当服务抛出时,WCF 处理 FaultException 异常的方式略有不同。

因此,从服务中抛出的所有异常都应该包装到 FaultException 中似乎是个好主意。

在设计方面,对于 WCF 似乎偏爱的设计(实际逻辑与“服务”配置/托管/类似服务的细节之间的清晰分离),这对我来说似乎有点违反直觉。

那么这是一个好习惯吗?还是应该使用任何其他技术?

0 投票
1 回答
1094 浏览

wcf - WCF 捕获自定义 FaultException

我想像这样使用custome FaultException

...

...

界面

但是当它到达客户端时,它会转换为 FaultException

我可以在 clint 上发现自定义错误吗?或 WCF 自动将其转换为 FaultException 我如何解决此问题

谢谢 kfir

0 投票
1 回答
1168 浏览

wcf - 使用 Castle Dynamic Proxy Generation 注入 WCF 故障合约

我目前正在使用 WCF 后端开发 WPF 应用程序。我们已经为异常处理实现了一个客户端日志解决方案和一个服务器日志解决方案,它们工作得很好,但通常很难通过网络将信息联系在一起。如果服务器上发生异常,我想要一种通过网络将异常令牌传回的方法,以便我可以将异常记录到客户端上。这样,当我解决客户端错误时,我可以很容易地将它与服务器异常关联起来。

我想提供更多关于我们的架构的信息,然后我会陈述我的问题。

我们的 WCF 实现比用于设置服务引用的开箱即用方法更健壮一些。我们在客户端实现了动态代理生成。我们通过创建客户端和服务器共享的 Web 服务接口来实现这一点,并使用 Castle.DynamicProxy.ProxyGenerator 类和 CreateInterfaceProxyWithoutTarget 方法来创建代理。此外,当我们调用 CreateInterfaceProxyWithoutTarget 方法时,我们指定了一个 IInterceptor 实现。在服务器上,有三个主要类用于我们的跟踪和故障行为:

FaultOperationInvoker(实现 IOperationInvoker):尝试使用 IOperationInvoker.Invoke 调用服务方法。如果是错误异常类型,则重新抛出,如果是异常,则尝试确定是否存在具有特定详细信息类型的错误合同,如果是,则包装然后使用详细信息引发新的错误异常。

FaultOperationBehavior (Implements IOperationBehavior) 将调度操作调用程序指向上述故障操作调用程序。

ExceptionTraceBehavior(继承属性,实现IServiceBehavior)用于处理实现IServiceBehavior的异常。我们还有一个类(FaultOperationBehavior)

我们的每一个服务接口都有一个具体的实现。我们所有的服务也继承了我们的基础服务类,该类用 ExceptionTrace 属性装饰。

所以,现在有了背景信息,问题就来了。我希望每个服务操作都有一个详细类型为 WCFServiceFaultDetail 的故障合同,但我不想在每个服务操作上都添加一个 FaultContract 属性。正如您在 ExceptionTraceBehavior 中看到的那样,我想出了如何以编程方式添加故障协定,并且它非常适合将故障添加到操作中。当在操作调用程序中捕获到一个常规的旧异常时,它会发现存在正确的故障契约并抛出一个新的 FaultExcption。但是,当异常被客户端捕获回来时,它会落入 catch (FaultExcection fe) 代码,而不是 catch (FaultException fe) 代码。

但是,如果删除以编程方式添加到故障合同中的代码,我会用 [FaultContract(typeof(WcfServiceFaultDetail))] 装饰每个服务操作,客户端会按预期捕获异常。

我唯一能想到的是,由于代理是从接口而不是从 WSDL 或其他元数据动态生成的,并且接口上没有错误契约修饰,所以我的编程错误契约没有得到兑现。

考虑到这一点,我试图弄清楚如何在 IInterceptor 实现中添加故障契约,但没有成功。

所以我希望有人已经这样做了并且可以提供一些细节。任何帮助表示赞赏。

0 投票
1 回答
427 浏览

asp.net - 错误异常永远不会在客户端被捕获

我正在尝试在 WCF 服务中实现 FaultException。我参考了各种文章。然而,似乎 FaultExceptions 从未在客户端被捕获。我写过这样的代码,

服务合约 -

服务实施——

客户端(aspx.cs 页面)-

服务层抛出异常,但客户端从未收到任何异常。我收到未处理的异常,例如,

基础连接已关闭:连接意外关闭。

0 投票
4 回答
10046 浏览

c# - 用户代码未处理 WCF Unhandled FaultException

我正在尝试在带有 .net 4.5 的 VS 2012 中使用带有 Telerik OpenAccess 的 WCF 普通服务。

我尝试了 Telerik 开发人员手册并创建了服务和客户端。

在服务接口 IEntitiesModel 我把

在 EntitiesModel.SVC 的方法中,我使用了一个简单的构造作为第一次尝试:

在消费者的用户代码中,我为异常设置了一个捕获。

现在的问题是:

每次调用该服务时,Visual Studio 都会在“throw new FaultException”中停止并显示错误消息,即用户代码未处理 FaultException。如果我继续 F5,异常也会被消费者的用户代码捕获。

为什么它在服务中停止?

在我的理解中,FaultException 是应该传递给服务消费者的东西。

我应该怎么做才能正确抛出 FaultException?