WCF-хостинг с двойным связыванием в IIS - PullRequest
1 голос
/ 12 февраля 2010

Я пытаюсь разместить службу в IIS, которая имеет 2 метода ... 1 из них также можно получить с помощью простого запроса HTTP-GET ...

Это мой конфиг:

  <service name="Svc.PaymentService" behaviorConfiguration="DefaultBehavior">
    <endpoint address="PaymentService.svc/"
              bindingName="Http"
              binding="basicHttpBinding"
              bindingConfiguration="httpBinding"
              contract="Svc.IPaymentService" />
    <endpoint address="WEBGETPaymentService.svc/"
              behaviorConfiguration="EndpointWebGetBehavior"
              binding="webHttpBinding" 
              contract="Svc.IPaymentService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/MyService/" />
      </baseAddresses>
    </host>
  </service>

содержимое файлов SVC - это просто перенаправление на мои уроки

<%@ ServiceHost Service="Svc.PaymentService"  %>
<%@ Assembly Name="MyService" %>

и интерфейс выглядит так:

    [OperationContract]
    string SOAPMethod(
        string test);

    [OperationContract]
    [WebGet(UriTemplate = "asdf?test={test}")]
    string RESTfulMethod(
        string test);

Когда я пытаюсь разместить службу в IIS и вызвать ее через HTTP-запрос GET, я всегда получаю 404 ...

http://localhost/MyService/WEBGETPaymentService.svc/RESTfulMethod/asdf?test=hello

В любом случае, когда я пытаюсь вызвать метод SOAP через PaymentService.svc, он работает ...

Есть идеи, в чем ошибка?

Спасибо

1 Ответ

3 голосов
/ 12 февраля 2010

Итак, чтобы использовать webHttpBinding, вам нужно использовать WebServiceHost (см. MSDN документы ) в файле * .svc на основе REST.

Итак, ваш WEBGETPaymentService.svc должен выглядеть следующим образом:

<%@ ServiceHost Language="C#" Debug="True" 
    Service="Svc.PaymentService"
    Factory="System.ServiceModel.Activation.WebServiceHostFactory"  %>

, поэтому в этом случае он будет использовать WebServiceHost и выполнит всю необходимую магию, чтобы сделать возможным REST в WCF.

Также обратитесь к Центру разработчиков WCF REST на MSDN для получения дополнительной информации о том, как размещать и использовать службы WCF REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...