Eri*_*ver 9 .net c# wcf web-services
我有一个操作合同(下面),我想允许GET和POST请求.如何告诉WCF接受单个OperationContract的两种类型的请求?
[OperationContract,
WebInvoke(Method="POST",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "query")]
XElement Query(string qry);
[OperationContract,
WebInvoke(Method="GET",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "query?query={qry}")]
XElement Query(string qry);
Run Code Online (Sandbox Code Playgroud)
Pre*_*ran 18
如果有人在寻找不同的解决方案,
[OperationContract]
[WebInvoke(Method="*")]
public <> DoWork()
{
var method = WebOperationContext.Current.IncomingRequest.Method;
if (method == "POST") return DoPost();
else if (method == "GET") return DoGet();
throw new ArgumentException("Method is not supported.");
}
Run Code Online (Sandbox Code Playgroud)
这篇由Carlos Figueira在MSDN论坛上发布的帖子有一个解决方案.我现在就说这个,但如果有人有任何更清洁的解决方案让我知道.
[OperationContract,
WebInvoke(Method="POST",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "query")]
XElement Query_Post(string qry);
[OperationContract,
WebInvoke(Method="GET",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "query?query={qry}")]
XElement Query_Get(string qry);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9553 次 |
| 最近记录: |