Доступ к операции REST WCF с использованием WebChannelFactory, если для операции задан UriTemplate
У меня есть служба отдыха WCF согласно приведенному ниже фрагменту кода
[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 из контракта на обслуживание, клиент вернет правильный ответ.
Любая помощь будет принята с благодарностью.
С уважением Ручитра
1 ответ
Ваш шаблон URI неверен. Вам нужно изменить это на это:
[WebInvoke(UriTemplate="/SaveList/Foos/SaveList",Method="POST")]
Он не добавляет имя вашего метода автоматически.
Кроме того, к сведению, согласно комментарию, который я оставил, вам не нужно Method="Post"