2

这是场景。有一个现有的服务合同,其中包含一些被桌面应用程序使用的方法。现在需要通过 ReST 暴露一些操作合约。但它要求将所有方法公开为 ReST。否则,如果参数被包装,下面的文本通常会出现异常。

真的很混乱。似乎是框架中的错误。

错误信息 -

合约“IService”的操作“SaveEntitiy”指定了多个要序列化的请求主体参数,而无需任何包装器元素。最多一个 body 参数可以在没有包装元素的情况下被序列化。删除额外的正文参数或将 WebGetAttribute/WebInvokeAttribute 上的 BodyStyle 属性设置为 Wrapped。

经营合同。

[ServiceContract]
public interface IService
{
        [OperationContract] //No need to expose this as ReST
        string SaveEntity(int id,string name);

        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
        string GetData(int value);
}

如果我们将 SaveEntity 公开为 ReST,那么一切正常。表示配置正确。

4

1 回答 1

0

当您尝试使用 GET 时,只需使用WebGet方法,如下所示:

[WebGet(UriTemplate = “GetData/input/{value}”)]

或者

您也可以尝试单独使用 [WebGet]。

于 2015-12-11T07:24:09.427 回答