Доступ к операции 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"

Другие вопросы по тегам