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

silverlight - silverlight 客户端不理解故障异常

我有一个抛出异常的 WCF 服务,我试图在我的 silverlight 客户端代码中捕获失败。我正在使用未声明的故障进行调试,这是我的服务方法:

现在在我的 silverlight 客户端视图模型中,在服务的回调方法中,我尝试像这样处理它:

在这一行else if (e.Error is FaultException) 我仍然得到 System.Net.WebException {远程服务器返回错误:NotFound.}

这些是配置条目

这是服务类声明

此服务位于同一 silverlight 解决方案中的另一个项目中。为什么我的 silverlight 客户端无法获得我抛出的错误异常?

谢谢你的时间...

0 投票
1 回答
1879 浏览

wcf - WCF FaultContract 因 NamedPipe 而失败

我有一个使用 WCF 和命名管道的简单 IPC 机制。我的目标是将异常详细信息(包括堆栈跟踪)传播到客户端以进行日志记录(应用程序日志记录的其余部分位于客户端上)。

如果我使用以下代码,我可以在客户端捕获 FaultException<Exception> 并查看异常详细信息:

合同:

执行:

客户:

这工作正常,我看到控制台上打印的消息。但是,如果我想使用自己的派生异常而不是基 Exception 类,它会失败。

自定义例外:

将 IService.DoSomething 上的 FaultContract 更改为

将 Service 中的 throw 子句更改为

将客户端中的 catch 子句更改为

当我执行此操作时,在客户端上捕获到 CommunicationException 并出现错误: System.ServiceModel.CommunicationException:从管道读取错误:管道已结束。(109, 0x6d)。

MyException 类位于客户端和服务器均可使用的共享库中。

这个问题与这个问题非常相似,但这对我没有帮助。

0 投票
1 回答
2883 浏览

wcf - 如何从异步 WCF 调用中捕获 FaultExceptions?

我想调用一个可以抛出 FaultException 的 wcf 服务,但我想异步执行此操作。如果一切正常,它不会返回异常,但如果服务抛出我的一个 FaultExceptions,在客户端中我会得到一个 CommunicationObjectFaultedException,并且它的所有属性都不包含我原来的 FaultException。

从到目前为止我可以了解到的信息是信息存储在其他地方。谁能告诉我它到底在哪里

例如,这两个处理用户的注册:

0 投票
1 回答
861 浏览

wcf - Wcf 和 ExceptionDetail 问题

我创建了自己的类,如下所示:

那么我的 wcf 服务接口如下所示:

现在一切都在开发环境中按预期工作 - 当我提出FaultException

它在客户端被抓住没问题。

当我开始使用wcftestclient.exe工具测试我的服务时,就会出现问题。我收到此错误:

添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。 错误:无法从 http://localhost:33620/MyService.svc获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:33620/MyService.svc的 MSDN 文档 元数据包含无法解析的引用:' http://localhost:33620/MyService.svc '。无法连接到 http://localhost:33620/MyService.svc。TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它127.0.0.1:33620。无法连接到远程服务器 由于目标机器主动拒绝,无法建立连接 127.0.0.1:33620

一旦我[FaultContract(typeof(MyOperationFault))] 从服务的方法中注释掉 -就会wcftestclient开始工作而不会出现故障。如何解决这个问题?

0 投票
2 回答
1343 浏览

wcf - WCF:DataContract 类中的 SOAP 错误或正常异常

我的 Service 的 OperationContract 的主要参数是一个名为 Preapproval 的类。在 Preapproval 类中,有一些用于 DataMember 属性的公共 getter/setter。我有验证设置器输入的代码,这样我会抛出 ArgumentException,如果说参数为空白或超出域的正确范围。

如果输入无效,我通常会在这里抛出 ArgumentException。由于这是 WCF 情况,我是否必须在此处抛出预定义的 FaultException 而不是 ArgumentException?我知道,在其他地方,我可能会捕获一般异常并将它们作为 FaultExceptions 重新抛出,但是在 WCF 管道自动执行的某些工作中,此活动将发生在堆栈的更高层。

例如,当调用者调用我的服务时,序列化程序将反序列化他们的 SOAP,尝试调用我的对象上的设置器,并在实际调用我的操作之前体验到 ArgumentException 的抛出。因此,在 DataContract 类中,简单地立即抛出 FaultExceptions 是一种好的设计实践吗?我真的不想将自定义处理程序连接到通道调度程序。

我知道我可以简单地直接抛出 FaultExceptions,但我真的很想将这种事情限制在服务中。如果无法避免,我也可以在支持类中进行,但我更愿意尽可能编写典型代码,与 System.ServiceModel 等耦合不那么紧密。

谢谢!

0 投票
1 回答
1305 浏览

c# - 自定义错误异常导致客户端出现 wcf 超时

我遵循了关于如何创建自定义故障异常的相同示例(通过创建一个 Exception 类并在 FaultContract 中引用它),但是每次我尝试从服务器抛出异常时,我都会收到来自客户端的连接超时,并且连接最近。奇怪的是,如果我使用默认的 FaultException 类从服务器抛出错误,那么客户端会正确接收它。

这是一个片段:

我像这样初始化服务器:

知道为什么我只有在使用自定义异常时才会出现连接超时?

非常感谢。

0 投票
2 回答
1046 浏览

c# - Visual Studio 调试器:跳过抛出的 FaultExceptions

我让我的客户端调用我在本地托管的 WCF 服务器,现在我正在调试客户端,所以在服务器上我故意抛出一个 FaultException 以查看客户端将如何处理它。

令人讨厌的部分是调试器在抛出 FaultException 的行上暂停。我怎样才能让它这样做?我查看了 Visual Studio 的选项(调试),没有看到任何类似于此选项的内容。

0 投票
2 回答
8162 浏览

wcf - FaultException 和自定义异常 WCF

我有一个关于如何将自定义异常作为 FaultException 发送的问题。当我使用像 ArgumentException 这样的系统异常时它可以工作,但是如果我将它更改为我的自定义异常“TestException”它会失败。当我尝试添加服务参考时,我无法获取服务参考的配置。

作品:

不起作用:

我的“TestException”看起来像这样:

我想我必须在自定义对象上添加一个 DataContract,但我不明白为什么它不能像现在这样工作,因为 ArgumentException 有效。有人可以启发我吗?

感谢帮助 :)

0 投票
1 回答
1061 浏览

wcf - WCF - 调用无效服务(它仍然是同步的)吗?

基本上,如果我的服务是: public void DoSomethingThatTakesAwhile() { ... },对该服务的调用会导致我的应用程序等待方法完成吗?

我问是因为我不希望我的调用者能够继续直到该方法完成,以防该方法需要引发错误异常。

0 投票
4 回答
5487 浏览

wcf - WCF - 抛出异常或 FaultException?

什么更有效率?抛出异常或抛出错误......我看到的方式是有两种情况:

  1. 发生异常并被捕获,您是抛出现有的Exception还是创建新的FaultException并抛出?

  2. 您自己的逻辑(例如用户名不能为空)需要将错误作为 Exception 或 FaultException 抛出。你选择哪个?

基本上,哪种方式是最佳实践方式?我之所以问,是因为我记得在某处读过有关 WCF 装箱或拆箱异常的信息,它会花费额外的资源等等......所以我也猜想,哪种方式更有效?