Как развернуть службу WCF на IIS 6.0? - PullRequest
8 голосов
/ 27 февраля 2012

Я совершенно новичок в WCF и развертывании сервисов. У меня проблемы с настройкой службы на IIS 6.0.

Мне нужны точные шаги для развертывания моей службы WCF в IIS 6.0.

Примечание. Я создал WCF приложение-службу ...

Итак, какие именно шаги мне нужно выполнить для развертывания моей службы wcf на IIS 6.0?

1 Ответ

12 голосов
/ 27 февраля 2012

Я полагаю, что у вас есть два основных варианта:

Вариант 1 - развертывание "bin" (предпочтительный вариант)

  1. компилирование службы WCF вDLL (библиотека классов)
  2. создать веб-сайт в IIS6
  3. скопировать DLL-файлы WCF в папку .\bin веб-сайта
  4. создать файл *.svc на этом веб-сайте
  5. добавьте соответствующий web.config в папку веб-сайта, чтобы определить свои конечные точки, конфигурацию службы и т. Д.

Ваша служба WCF теперь будет доступна по базовому адресу веб-сайта плюс имяФайл *.svc, например,

http://myserver/someweb/Myservice.svc

Ваш *.svc будет выглядеть примерно так:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService"  %>

Атрибуты Service= обозначают класс, реализующий сервис - полностью квалифицированный с егоnamespace.

Вариант 2 - поместить материал в App_Code

  1. создать сайт в IIS6
  2. поставить все ваши WCF связанные *.cs файлы непосредственно в папку .\App_Code
  3. создать файл *.svc на этом сайте
  4. добавьте соответствующий web.config в папку веб-сайта, чтобы определить свои конечные точки, конфигурацию службы и т. Д.

Ваша служба WCF теперь будет доступна по базовому адресу веб-сайта плюс имяфайл *.svc, например,

http://myserver/someweb/Myservice.svc

Ваш *.svc будет выглядеть примерно так:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %>

Простой пример web.config может выглядеть примерно так:

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="WithDebug">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="true">
      <endpoint
          address=""
          binding="basicHttpBinding"
          contract="SimpleWCF.IHelloIndigoService" />
      <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />
    </service>
  </services>
</system.serviceModel>

Вы в основном определяете свой тег <service> - и снова: name= обозначает класс, реализующий сервис - полностью квалифицированный с его пространством имен.Он должен содержать хотя бы одну конечную точку - поскольку IIS6 поддерживает только HTTP, вы можете использовать basicHttpBinding или wsHttpBinding, и это почти все, что есть.Конечная точка "mex" является необязательной, но очень полезной, особенно для разработки и тестирования.Он позволяет клиенту «обнаружить» службу и получить ее описание службы, чтобы он мог взаимодействовать с ней.

После развертывания службы в IIS ее можно увидеть в действии с помощью такого инструмента, как WCF.Тестовый клиент , который поставляется бесплатно с WCF, или SoapUI , представляющий собой универсальную утилиту для тестирования SOAP (с бесплатной версией для использования).

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