它必须是可序列化的,还是不可序列化的?
似乎当我使用自定义类时,我会做类似的事情:
[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
{
...
}
我认为至少有一个(如果不是更多)这些项目被序列化,但界面本身不标记在顶部: [序列化] 或的 [序列化]
返回类型需要什么?
答案 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; }
}