从ASP.NET 2.0访问WCF服务

时间:2011-07-22 22:13:53

标签: asp.net wcf binding

我正在尝试在ASP.NET 2.0 Web应用程序中访问使用basicHttpBinding公开的WCF服务。这些服务使用Entity Framework 4.0,其业务实体是使用ADO.NET自我跟踪实体生成器T4模板创建的。我可以从ASP.NET 2.0应用程序附加到服务就好并编译,但在运行时,当我尝试调用服务进行保存时,我收到以下错误:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:foc时出错。 InnerException消息是NetDataContractSerializer不支持使用类型'Business.App.ObjectChangeTracker'作为只获取集合。考虑使用CollectionDataContractAttribute属性或SerializableAttribute属性标记类型,或者向属性添加setter。有关详细信息,请参阅InnerException。

我对服务声明没有任何看法;只是正常的ServiceContract和OperationContract属性。

[ServiceContract]
public interface ILSRPipelineServiceEndPoint
{
    [OperationContract]
    LSRRequestTypeMapping[] GetRequestTypeMappings();

    [OperationContract]
    LSRResponseTypeMapping[] GetResponseTypeMappings();

    [OperationContract]
    ServiceResult<FOCResponse> ValidateFOC(FOCResponse foc);

    [OperationContract]
    ServiceResult<FOCResponse> SendFOC(FOCResponse foc);

    [OperationContract]
    ref_SourceType GetGatewaySourceType();
}

显示的所有对象都标有[DataContract(IsReference = true)]

任何想法我做错了什么,或者我能做些什么来解决这个问题?万分感谢!

2 个答案:

答案 0 :(得分:1)

我认为问题在于您使用的是NetDataContractSerializer而不是DataContractSerializer。据我所知,自跟踪实体仅支持DataContractSerializer。

请参阅此页:MSDN thread

答案 1 :(得分:0)

我最终改为使用View Model POCO,而不是尝试使用状态跟踪组件发送原始对象。谢谢,全部!经验教训。