C# WCF服务激活异常混淆

C# WCF服务激活异常混淆,c#,.net,wcf,iis-6,C#,.net,Wcf,Iis 6,我有一个WCF服务,当部署在我们的开发和测试环境中时,它可以完美地工作,但在生产环境中会失败 尝试浏览服务时,会引发以下异常(内部异常类型为InvalidDataContractException): [ ServestAc激活异常:Service '/iL.Po.WS/Po.SVC不能在编译过程中被激活。异常消息是:“IL。Pr.M.Stand”不能序列化。请考虑用DATACONTractAttor属性标记它,并标记要用DATAMEMBER属性ATTILB序列化的所有成员。ute.] 我不知道

我有一个WCF服务,当部署在我们的开发和测试环境中时,它可以完美地工作,但在生产环境中会失败

尝试浏览服务时,会引发以下异常(内部异常类型为InvalidDataContractException):

[ ServestAc激活异常:Service '/iL.Po.WS/Po.SVC不能在编译过程中被激活。异常消息是:“IL。Pr.M.Stand”不能序列化。请考虑用DATACONTractAttor属性标记它,并标记要用DATAMEMBER属性ATTILB序列化的所有成员。ute.]

我不知道这里发生了什么。这三个环境都是Windows Server 2003、IIS6和.NET 3.5。在服务失败的服务器上,我甚至删除了temp.ASP.NET文件以强制重新编译。在这三个环境中都部署了相同的代码。如果“IL.Party.MS.Person”不可序列化,我希望在所有三种环境中都不会出现此错误。Person类型的字段类型为string、int、DateTime和decimal,因此没有任何异常情况,并且完全可以序列化


有人知道是什么原因导致了这种情况吗?

您是否尝试过回收应用程序池?最好的做法是明确标记您的数据契约,以便我也应用这些属性。是否可能是您的vdir http激活配置错误?

Marc_s在评论中回答了这一问题

但原因似乎是数据协定序列化程序中的更改


这可能是一个原因。我遇到此错误的原因与下面提到的相同

Memory gates checking failed because the free memory (258187264 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.

生产.NET 3.5和您的开发/测试3.5 SP1是否有可能?啊,很好,是的。为什么这么简单的类型在SP1之前被认为是不可序列化的?这似乎是答案:DataContract序列化程序通过放松/删除类型上[DataContract]和[DataMember]的ned变得更容易。它是POCO(普通的Ol'CLR对象)时间,人。(来自)我仍然更喜欢显式地将[DataContract]和[DataMember]放在我的类中——只是为了清楚地说明我的意图。回收、iisreset、服务器重新启动。这基本上涵盖了我的基本知识。这可能是因为在生产环境中.NET 3.5是内置的,而在开发环境中测试它的.NET 3.5 SP1(见上文)。正确,谢谢marc_。谢谢Shiraz提供的额外信息。忙于将生产升级到.NET 3.5 SP1-将报告此问题是否得到解决。升级到.NET 3.5 SP1后,工作正常。请注意,真正的原因是缺少[DataContract]和[DataMember]属性,如foosnazzy所述,应该添加这些属性。