HTTP POST для службы WCF - PullRequest
       5

HTTP POST для службы WCF

0 голосов
/ 21 ноября 2010

Что должно произойти, чтобы разрешить HTTP POST службе WCF?

Я хотел бы позволить людям не только использовать SOAP с этим сервисом, но и иметь возможность HTTP POST к этому сервису и в идеале получать XML-ответ.

Я не могу найти простой способ разрешить службе WCF принимать HTTP POST.

Я преодолел ошибку HTTP 415 и мне нужна некоторая помощь, возможно, с изменением web.config относительно конечных точек или с дополнительным атрибутом над методом (WebInvoke).

Спасибо!

1 Ответ

4 голосов
/ 22 ноября 2010

Чтобы общаться со службой WCF по стандартным HTTP-глаголам, необходимо использовать компоненты WCF REST.

В .NET 3.5 SP1 есть стартовый комплект WCF REST, который вам понадобится (он не входит в базовый пакет).

Если у вас есть это, вы можете определить конечную точку в вашей службе WCF с помощью webHttpBinding, и это в основном должно позволить вам определять операции GET, POST, PUT и DELETE.

Посетите Центр разработчиков WCF REST , где вы найдете множество официальных документов, учебных пособий, пошаговых инструкций и скринкастов, показывающих, как именно все это сделать.

В двух словах, вы бы украсили свои сервисные методы, которые вы хотите предоставить через HTTP REST, с атрибутами WebGet или WebInvoke и шаблоном URL - что-то вроде:

[ServiceContract]
public partial class YourService
{
    [WebInvoke(Method = "POST", UriTemplate = "yourservice/{id}/save")]
    [OperationContract]
    SomeReturnType YourMethodCall(string someParam);
    ...
}

, а затем в вашем web.config (для размещения в IIS) или в app.config вам нужна конечная точка с правильной привязкой:

<endpoint name="webEndpoint"
          address="...."
          binding="webHttpBinding"
          contract="IYourServiceContract" />

Вам также может понадобиться несколько дополнительных вещей в вашей конфигурации - центр разработки WCF REST должен подробно изучить все детали.

...