wcf请求包装器名称

时间:2012-06-05 13:06:50

标签: .net wcf

有没有办法更改用于使用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>

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

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

2 个答案:

答案 0 :(得分:1)

这里有类似的问题; How can I control the name of generic WCF return types?

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

[OperationContract]
[return: MessageParameter(Name="YOURNAME")]
Response<List<Customer>> GetCustomers();

答案 1 :(得分:0)

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