2008-09-26 4 views

ответ

6

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

Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

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

После этого я смог удалить весь раздел из web.config и все еще работало!

2

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

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

Я пробовал это, но получил сообщение об ошибке: «... Несоответствие AddressFilter в EndpointDispatcher». Оказывается, вам также нужно добавить WebHttpBehavior к вашему поведению, но я не знаю, как это сделать в web.config. – kgriffs 2008-09-26 14:57:54

+0

<поведение имя = "restBehavior"> GWTF 2011-06-14 17:44:41

1

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

<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> 

Так что теперь, если вы самостоятельно хостинг с помощью консольного приложения для eg..you может вызвать ваш хост через:

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

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

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

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