我使用WCF作为客户端来联系接受并返回JSON数据的REST服务。
该服务位于http://127.0.0.1/REST/get_details/-注意尾部的正斜杠
不幸的是,WCF在调用url之前转义了尾部的正斜杠,因此调用失败。我不能使用WebInvoke的UriTemplate属性,因为这是一个webscript调用,所以它是不允许的,并且[OperationContract]的Action和ReplyAction是针对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);
}
啊。。。我没有正确使用config标记。您只能在服务终结点而不是客户端终结点上指定此项。在客户端中实现的端点上指定它是没有意义的。
"此元素启用端点行为,从而可以使用ASP.NET AJAX网页中的服务。"http://msdn.microsoft.com/en-us/library/bb675191.aspx