将选定的操作协定公开为 ReST 导致错误 协定'IContract'的操作'method name'指定多个请求正文



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

真是令人困惑。看起来像是框架中的一个bug。

错误消息-

约定"IService"的操作"SaveEntity"指定要序列化的多个请求正文参数,而不包含任何包装元素。在没有包装器元素的情况下,最多可以序列化一个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,那么一切都会起作用。表示配置正确。

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

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

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

相关内容

最新更新