WCF ServiceActivationException混淆

时间:2009-10-09 11:41:54

标签: c# .net wcf iis-6

我有一个WCF服务,在我们的开发和测试环境中部署时可以很好地工作,但是在生产环境中会出现这种情况。

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

[ServiceActivationException:由于编译期间发生异常,无法激活服务'/IL.Party.WS/Party.svc'。异常消息是:类型'IL.Party.MS.Person'无法序列化。考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员。]

我无法弄清楚这里发生了什么。所有这三种环境都是Windows Server 2003,IIS6和.NET 3.5。在服务失败的服务器上,我已经删除了temp。 ASP.NET文件强制重新编译。在所有三种环境中部署相同的代码。如果'IL.Party.MS.Person'不可序列化,我希望在所有三种环境中都会出现此错误。 Person类型具有string,int,DateTime和decimal类型的字段 - 所以没有什么不同寻常的,并且绝对可序列化。

有没有人知道造成这种情况的原因是什么?

3 个答案:

答案 0 :(得分:3)

Marc_s在评论中实际回答了这个问题。

但看起来原因是数据合同序列化器的变化。

http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这可能是一个可能的原因。我出于同样的原因遇到了这个错误

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.