【发布时间】:2014-04-17 05:30:54
【问题描述】:
我正在尝试使用以下端点(以及其他端点)创建一组 WCF REST 服务:
- /Session(支持 HTTP POST 并创建 Session 对象。在响应中返回 sid)
- /Session/{sid}(支持 HTTP GET 并返回代表先前创建的 Session 的 JSON 对象)
以下是服务合同中的定义:
[OperationContract]
[WebInvoke(Method="POST", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json, UriTemplate="Session")]
string InitializeSession(Stream contents);
[OperationContract]
[WebInvoke (Method="GET", RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json, UriTemplate="Session/{sid}")]
string RetrieveSession(string sid);
如果没有定义 GET 操作,我可以很好地调用 POST 并在响应中获得预期的 sid。当包含 GET OperationContract 时,调用 POST 会抛出:
500 System.ServiceModel.ServiceActivationException
响应中没有其他数据(非常有帮助),即使我有
<serviceDebug includeExceptionDetailInFaults="true"/>
在 web.config 的服务行为中定义。
OperationContract 定义对于我想要实现的目标是否正确(假设我想要实现的目标是正确的 RESTful)?如果是这样,我可能会遗漏哪些愚蠢的配置选项可以允许访问这两个操作?
【问题讨论】:
-
与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。见Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。
标签: c# web-services wcf rest