- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一些跟踪显示,由于我的异常 T 未正确序列化,所以引发了 CommunicationException;因为,在两层深处,我有一个匿名类型的对象,它是不可序列化的。删除它并冒泡更改似乎可以修复它。在此之前我还做了一些小事,但我一辈子都不记得那是什么了,只是它没有在配置中完成。
我从我的痕迹中收到消息,例如:
Type 'RebuiltWCFService.Requests.HelloWorldRequest' with data contract name 'HelloWorldRequest:http://schemas.datacontract.org/2004/07/RebuiltWCFService.Requests' is not expected.
Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
我今天遇到了一个看似奇怪的问题,但我找不到答案!
问题:当我抛出FaultException 时,我的服务抛出CommunicationException!如果我不抛出异常,它不会执行此操作。
在我的服务中,我正确定义了故障契约:
[OperationContract]
[FaultContract(typeof(Faults.HelloWorldFault))]
Responses.HelloWorldResponse HelloWorld(Requests.HelloWorldRequest parameter);
然后在错误条件下我抛出正确类型的异常:
if (_errors.Count() > 0)
{
Faults.HelloWorldFault fault = new Faults.HelloWorldFault(_errors);
throw new FaultException<Faults.HelloWorldFault>(fault, new FaultReason("There are one or more errors in the request. Check the 'Errors' property for more detaisl"));
}
然后我在客户端捕获它:
try
{
response = client.HelloWorld(new BasicService.HelloWorldRequest() { Number = 49 });
client.Close();
Console.WriteLine(String.Format("Response message: {0}, Response number: {1}", response.Message, response.Number));
}
catch (FaultException<BasicService.HelloWorldFault> ex)
{
...
}
这一切对我来说似乎都不错,而且应该可行。然而,一旦我去测试我的错误子句(通过提供错误的数据,例如缺失的字段),整个事情就在我身上消失了。当我抛出FaultException时,服务会抛出带有消息的CommunicationException
An error occurred while receiving the HTTP response to http://localhost:8732/Design_Time_Addresses/RebuiltWCFService/Service1/.
This could be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down).
See server logs for more details.
有人可以对此提供一些见解吗?我正在使用 basicHttp 绑定(bind),并且还尝试使用 wsHttp。我将根据要求发布我的配置文件。
最佳答案
FaultException 是 CommunicationException 的子级。所以您的代码中发生的事情没有任何问题。
如果您在处理时不确定异常是什么,通常会报告为 CommunicationException。如果您想以自己的方式处理特定异常,请使用以下结构。
try
{ ... }
catch (FaultException<MyDemoException> me)
{ ... }
catch (FaultException fe)
{ ... }
catch (CommunicationException ce)
{ ... }
catch (Exception ex)
{ ... }
在上面的结构中,Exception 是 CommunicationException 的父级。 CommunicationException是FaultException等的父类。
System.Object
System.Exception
System.SystemException
System.ServiceModel.CommunicationException
System.ServiceModel.FaultException
System.ServiceModel.FaultException<TDetail>
System.ServiceModel.Web.WebFaultException<T>
关于当抛出FaultException时WCF抛出CommunicationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547466/
我从不了解 WCF 的一件事是,当服务器遇到未处理的异常时,为什么没有异常消息详细信息传播回调用客户端。 例如,如果我有以下服务器代码 [ServiceBehavior(IncludeExceptio
最初: 我以为这是一个循环引用问题........结果不是。 问题是因为根本没有配置服务配置。 由于默认值非常低,发送大量数据会使服务崩溃。 场景: 我的 WCF 服务中似乎有循环引用,但使用“[Da
在工作中,我们开发了一个可以从外部访问的 SOAP WCF API。由于对 API 的要求之一发生了变化,我想向该 API 添加一个新类,以便为某些函数调用生成正确的路径。 我们的 API 分为 3
Spring Boot 应用程序使用 MySQL + C3p0 数据源。 我用这个数据源与JDBC和JPA(提供者Hibernate)一起工作。 在每个 JDBC DAO 层方法中,我都有 try/c
目前我遇到了一个我不明白的问题。我有一个 wcf 客户端,它同时通过多个线程调用 wcf 服务(都在同一台机器上)。有时,我会遇到众所周知的 System.ServiceModel.Communica
我在客户端应用程序上遇到了这个异常,不知道如何解决这个问题。 当返回的数据(价格列表)超过 15MB,但适用于小于 15MB 的消息时,我遇到了这个异常。 错误消息: 接收对“http://local
此问题与 System.ServiceModel.CommunicationException: The underlying connection was closed 重复但这并没有解决我的问题。
我正在使用 MS Dynamics CRM api 从中获取数据(超过 5000 条记录)。 我正在使用基于 XML 的查询来获取数据 EntityCollection resultSet = _or
目前,我在安全身份验证过程中使用 ActiveDirectoryLdapAuthenticationProvider 和一个自定义提供程序。假设 CustomAuthenticationProvide
我在通过 SSL 使用 LDAP 时遇到了奇怪的问题。要进入应用程序,我们有登录窗口,用户可以在其中输入密码和用户名。如果他输入正确的内容,一切都会正常进行。但如果他输入错误,就会出现奇怪的问题。我收
我们有一个在不同机器上运行的 jar(所有机器都连接在 LAN 中),并且该 jar 填充存储在单个(本地主机)机器的数据库上的数据......但几个小时后,所有机器都同时出现以下异常...... 我
下午好, 我目前正在制作一个网络应用程序,该应用程序必须可供网络内外的用户访问。但这两种情况都需要身份验证。 问题是我不知道如何捕获当我尝试进行网络身份验证时 Spring Security 抛出的以
我在尝试连接 Active Directory 时偶尔会遇到此异常。 javax.naming.CommunicationException: : [Root exception is java.
这个问题在这里已经有了答案: "PKIX path building failed" and "unable to find valid certification path to requeste
这会偷走我的理智。我几乎浏览了我在网上找到的所有内容,但没有向前迈出一步。无论我在做什么,挫败感都不足以描述这个错误消息弹出。 但一个接一个。 我有一台带有 VS 2008 SP1 德语版 Sil
我试图通过 WCF 传递位图,但它抛出错误 System.ServiceModel.CommunicationException was unhandled by user code Message=
我在 eclipse 3.7 中使用 jboss 5.0 应用程序服务器创建了一个 ejb2 应用程序。我的客户端代码如下- import rohit.*; import java.util.Prop
我想问一个让我一直发疯的问题@_@我为 Windows Phone 8 制作了一个应用程序,它从 wcf 服务中检索数据。幸运的是,我的同事让我为此服务。但是,当我使用该服务时,出现了这个错误。 Sy
我有一个 WCF 服务,我在其中捕获 SqlException 然后将其作为 FaultException 返回,如下所示 throw new FaultException(...); 在客户端,我是
我正在为运行嵌入式 Linux 的设备(碰巧是 Pelco 品牌的视频圆顶)中的 SOAP 服务开发一个 VS2010 Dotnet 4.0 客户端。我无法控制设备中的 SOAP 服务器。供应商提供了
我是一名优秀的程序员,十分优秀!