有没有办法更改用于使用WebMessageBodyStyle.Wrapped
或WebMessageBodyStyle.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>
我知道响应是可能的,我们可以在请求中更改单个参数,但我找不到有关更改请求包装器的任何信息。
编辑:我想这样做的原因是将包装器更改为通用的类似“参数”或“请求”的东西,并且最好为我的每个操作使用相同的包装器。我认为这比要求客户担心每个请求的包装器更干净,更友好,而且它会显示更少的元数据。
答案 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);