退还运营合同需要什么?

时间:2013-11-26 16:09:19

标签: c# asp.net web-services

它必须是可序列化的,还是不可序列化的?

似乎当我使用自定义类时,我会做类似的事情:

[OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    IECInstance testme();

并在其定义中:

public IECInstance testme()
    {
        IECInstance tst = ...;
        return tst;
    }

我当时认为有必要这样的东西会让这种东西回归。现在它返回504,超时错误。

可能这个项目不可序列化,这是我认为最重要的问题。

IECInstance 的界面是:

public interface IECInstance : 
    IECNamedValueContainer, 
    IECValueContainer, 
    IEnumerable<IECPropertyValue>, 
    IEnumerable, 
    IECDump, 
    ICloneable, 
    IExtendable
    {
    ...
    }

我认为至少有一个(如果不是更多)这些项目被序列化,但界面本身标记在顶部: [序列化] 或的 [序列化]

返回类型需要什么?

1 个答案:

答案 0 :(得分:1)

尝试使用ServiceKnownTypeAttribute

[OperationContract]
[WebInvoke(Method = "GET",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
[ServiceKnownType(typeof(WhateverYourECInstanceTypeIs))]
IECInstance testme();

是的具体类型需要像这样序列化

[DataContract]
public class WhateverYourECInstanceTypeIs : IECInstance 
{
    [DataMember]
    public int Foo { get; set; }
}