c# - 在单个操作中启用多个 HTTP 方法?

标签 c# .net wcf web-services

我有一个操作契约(Contract)(如下),我想允许 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);

最佳答案

如果有人在寻找不同的解决方案,

[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.");
}

关于c# - 在单个操作中启用多个 HTTP 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555073/

相关文章:

c# - 如何将文件添加到 Azurite [Azure 存储模拟器]

c# - 如何使用 PLINQ 执行 IO 密集型任务?

c# - 从 SSRS 连接到数据提要

c# - 通过 Java 客户端连接到 WCF 服务

c# - 在 GetIncationList() 之后获取合适的 eventHandler

c# - 如何在 .NET 4.0 中正确使用 async/await

c# - C# 中的乘法错误

c# - 为什么在 OOP(例如 Java、C#)中使用 break/continue 标签是一种不好的做法?

javascript - 外部 JavaScript 不工作

.net - Ninject WCF 扩展 ArgumentNullException 使用 NET.TCP 绑定(bind)