【发布时间】:2012-03-01 22:25:22
【问题描述】:
我使用 WCF 作为客户端来联系接受并返回 JSON 数据的 REST 服务。
服务位于 http://127.0.0.1/REST/get_details/ --注意尾部的正斜杠
不幸的是,WCF 在调用 url 之前转义了尾部正斜杠,因此调用失败。我不能使用 WebInvoke 的 UriTemplate 属性,因为这是一个 webscript 调用,所以它是不允许的,并且 的 Action 和 ReplyAction [OperationContract] 用于 SOAP 而不是 REST,所以我也不能使用它们。
此调用导致的错误 url 是:/REST/get_details_x002F_
如何阻止 WCF 弄乱 url?
[ServiceContract(Namespace="http://127.0.0.1/REST/")]
public interface IDetailsSvc
{
[OperationContract(Name = "get_details/")]
[WebInvoke(
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
DetailsResponse GetDetails(string id);
}
【问题讨论】:
-
幸运的是,我能够要求另一端的开发人员不需要正斜杠,但我仍然想看看是否有人对此有更好的解决方案。你并不总是能够要求改变这些事情。
-
您应该真正删除尾部斜杠,这不是必需的,并且会导致您发现的混乱。 ;-)