根据下面的代码段,我有一个WCF Rest服务
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(UriTemplate="/SaveList/Foos/",Method="POST")]
bool SaveList(List<Foo> myFoos);
}
该服务是一个自托管服务,并使用webHttpBinding公开一个端点。我有一个客户端控制台应用程序,其中包含以下代码段:
public void Send()
{
var myObj = new Foo{Id=1, Name="Test"};
using (WebChannelFactory<OurService.Services.IOurService> cf = new WebChannelFactory<IOurService>("WebHttpBinding_IService"))
{
IUtranetService channel = cf.CreateChannel();
using (new OperationContextScope(channel as IContextChannel))
{
var status = channel.SaveList(new[] { myObj });
}
}
}
客户端代码抛出异常,如下所示: 在“http:// localhost:1133 / Service / SaveList”中没有可以接受该消息的端点。
我不确定我哪里出错了。如果我从服务合同中删除UriTemplate,客户端将返回正确的响应。
非常感谢任何帮助。
此致 Ruchitra
答案 0 :(得分:1)
您的URI模板不正确。您需要将其更改为:
[WebInvoke(UriTemplate="/SaveList/Foos/SaveList",Method="POST")]
它不会自动附加您的方法名称。
另外,根据我留下的评论,您不需要Method =“Post”