Вопрос

Какой минимум мне нужно указать в web.config, чтобы WCF работал с REST?Я аннотировал свои методы с помощью [WebGet], но они не получили сообщение.

Это было полезно?

Решение

Я обнаружил, что вы можете добавить следующее в директиву ServiceHost в файле *.svc, и он автоматически настроит для вас WebHttpBinding и WebHttpBehavior:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

Обратите внимание, что пространство имен немного отличается от того, что упоминается где-либо в Интернете (например, в эта статья MSDN).

После этого мне удалось удалить весь раздел из web.config, и все по-прежнему работало!

Другие советы

Убедитесь, что вы используете webHttpBinding на своей конечной точке (а не httpBinding или wsHttpBinding).Вот моя конфигурация конечной точки...

    <endpoint address="" binding="webHttpBinding" bindingConfiguration=""
      contract="WcfCore.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

Вам необходимо убедиться, что у вас есть адрес хоста вашей службы, например

<services>
      <service name="SomeLib.SomeService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/somebase"/>
          </baseAddresses>
        </host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->

        <endpoint 
                   address="basic"
                   binding="basicHttpBinding"
                   contract="SomeLib.SomeContract"/>
</service>
</services>

Итак, теперь, если вы самостоятельно размещаете хост через консольное приложение, например... вы можете вызвать свой хост через:

WebChannelFactory<IServiceContract> factory =
        new WebChannelFactory<IServiceContract>(
            new Uri("http://localhost:8080/somebase"));

Когда консольное приложение запустится, адрес будет доступен для просмотра, даже если он размещен самостоятельно, и вы сможете вызывать свои действия на основе шаблонов URI вашего веб-сайта.

Эта минимальная конфигурация позволит вам вызывать WCF RestFULLY через самостоятельный хостинг.Если вы размещаете хостинг в IIS, по сути, он будет работать так же, за исключением того, что файл svc заменяет наш собственный хост.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top