2015-05-19 2 views
1

Когда я делаю новое приложение WCF Service Application под названием «WcfService1» в Visual Studio 2013 и сразу же запускаю его, запросы, сделанные клиентом WCF Test, работают безупречно. Не удивительно.Тестирование WCFService1 с помощью Postmen или SoapUI дает 400 Bad Request

Когда я пытаюсь протестировать это же начальное приложение в клиентах REST/SOAP, таких как Postman или SoapUI, я получаю ошибку 400 Bad Request. Что нужно изменить в клиенте REST, таком как Почтальон, чтобы сделать запрос на начальное приложение VS?

Среди других я проверил эти возможности:

1. Исходный код сданным первоначальной заявке службы WCF

 

    [ServiceContract] 
    public interface IService1 
    { 
     [OperationContract] 
     string GetData(int value); 
    } 

Для удобства чтения я не вставить исходный код из всего проекта. Если хотите, вы можете создать его, создав новый проект приложения WCF Service Application в VS.

Ниже вы видите, как я настроил Почтальон и что это дает 400 Bad Request:

enter image description here

2. запрос Raw XML в Почтальон как скопированные из Client Test WCF

enter image description here

Этот вариант не разрешил ошибку. Исходный код нетронутый, как указано выше.

3. Исходный код распространяется с WebInvokeAttribute на операции GetData

 

    [OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "/GetData")] 
    string GetData(int value); 

Это дополнение не решить эту ошибку. Все настройки в Postman такие же, как и выше; конечно, с/GetData в URL.

4. OperationContractAttribute операции GetData расширен

 

    [OperationContract(Action = "http://www.jorritsteetskamp.nl/wcfservice1")] 
    string GetData(int value); 

Я попытался Почтальон с SOAPAction заголовок добавляется, но опять-таки приводит к ошибке 400:

enter image description here

На SO существует несколько вопросы о WCF-сервисах и 400 ошибках Bad Request, но все они кажутся специфичными для приложений и не имеют решения для этого случая. Поскольку эта проблема возникает с исходным приложением, сгенерированным Visual Studio, и работает в тестовом клиенте WCF, я нашел причину для публикации этой проблемы.

Мой вопрос: Что нужно изменить в клиенте REST, таком как почтальон, чтобы сделать запрос к исходному приложению VS?

Любая помощь будет оценена по достоинству.

ответ

1
  • Дело 1: вы отправляете данные формы, вместо этого вы должны размещать SOAP/XML.
  • Случай 2: вам не хватает заголовка действия SOAP.
  • Случай 3: запрос кажется одобренным, но вы, возможно, не настроили конечную точку WebHttp.
  • Дело 4: URL-адрес службы не требует GetData.

Для того, чтобы сделать его как REST службы вам нужно

  1. сервисный метод Annonate с WebGet/WebInvoke
  2. Настройка WebHttp конечной точки.
  3. Использовать заявку от случая 3.
+1

Спасибо за ваше объяснение, это то, что мне нужно. Для справок в будущем: Мое решение состояло в том, чтобы объединить случаи 2 и 4. Секция заголовка необработанного XML из тестового клиента WCF должна быть заменена реальным заголовком SOAPAction в клиенте REST (случай 4). И действительно URL без GetData. В этом решении нет необходимости настраивать конечную точку WebHttp, поскольку конфигурация по умолчанию .NET отлично. –

 Смежные вопросы

  • Нет связанных вопросов^_^