2

有什么方法可以更改用于使用WebMessageBodyStyle.WrappedWebMessageBodyStyle.WrappedRequest不使用操作名称的 WCF 请求的包装器?

因此,对于以下内容:

[OperationContract()]
[WebInvoke(Method = "PUT",
       BodyStyle = WebMessageBodyStyle.WrappedRequest,
       UriTemplate = "foo")]
bool PutSomeValue(string id, string bar);

而不是请求是:

<PutSomeValue>
    <id>1234</id>
    <bar>myValue</bar>
</PutSomeValue>

我希望它是:

<MyNewWrapperName>
    <id>1234</id>
    <bar>myValue</bar>
</MyNewWrapperName>

我知道响应是可能的,我们可以更改请求的各个参数,但我找不到有关更改请求包装器的任何信息。

编辑:我想这样做的原因是将包装器更改为通用的东西,如“参数”或“请求”,并且最好为我的每个操作使用相同的包装器。我认为这将比要求客户端担心每个请求的包装器更清洁和更用户友好,而且它会显示更少的元数据。

4

2 回答 2

1

类似的问题在这里; 如何控制通用 WCF 返回类型的名称?

和答案 https://stackoverflow.com/a/172370/929902

[OperationContract]
[return: MessageParameter(Name="YOURNAME")]
Response<List<Customer>> GetCustomers();
于 2012-08-24T16:10:16.300 回答
0
[OperationContract(Name = "MyNewWrapperName")]
[WebInvoke(Method = "PUT",
       BodyStyle = WebMessageBodyStyle.WrappedRequest,
       UriTemplate = "foo")]
bool PutSomeValue(string id, string bar);
于 2012-06-05T13:44:41.430 回答