ScriptIgnore不适用于WCF REST服务应用程序

时间:2012-10-16 14:16:44

标签: c# visual-studio-2010 wcf rest scriptignore

我启动了一个Visual Studio WCF Rest服务应用程序项目,我希望有一个服务返回带有序列化对象的Json格式的消息,我希望该对象的某些字段不被序列化。我必须说我对WCF的了解非常基础,我使用了Visual Studio中的Rest Service Application项目,因为它是一种快速实现我需要的简单方法。

让我们说这是我的目标:

public class BaseMessage
{
    public string errorCode { get; set; }
    public string errorMessage { get; set; }
}

这是我的代码

    [WebGet(UriTemplate = "/v1/test", 
    ResponseFormat = WebMessageFormat.Json),OperationContract]

    public BaseMessage Test()
    {
        return (new BaseMessage { errorCode = "000", errorMessage = "test" });
    }

我到处都读到我需要做的是将[ScriptIgnore]属性分配给我不想序列化的属性。但是,如果我这样做,它就不起作用。无论如何,我把它们序列化了。

我实现我想要做的唯一方法是以这种方式声明我想要返回的对象:

[Serializable]
public class BaseMessage
{
    public string errorCode;
    [NonSerialized]
    public string errorMessage;
}

通过这种方式,我按照自己的意愿对类进行了序列化。但它让我很烦恼,因为我可能没有做正确的事情。我这样做了吗?

1 个答案:

答案 0 :(得分:1)

我认为您应该为数据对象使用[DataContract]属性,为对象成员使用[DataMember]

喜欢这里http://msdn.microsoft.com/en-us/library/ms733127.aspx

当你想忽略一个项目时;您将其标记为[IgnoreDataMember]属性