Ответ 1
У вас есть в основном два варианта, я считаю:
Вариант 1 - развертывание "bin" (предпочтительный вариант)
- скомпилируйте вашу службу WCF в библиотеку DLL (библиотека классов)
- создать веб-сайт в IIS
- скопируйте DLL WCF в папку
.\bin
веб-сайта - создайте файл
*.svc
на этом веб-сайте - добавьте соответствующий
web.config
в папку веб-сайта, чтобы определить конечные точки и конфигурацию сервиса и т.д.
Теперь ваша служба WCF будет доступна на базовом адресе веб-сайта плюс имя файла *.svc
, например
http://myserver/someweb/Myservice.svc
Ваш *.svc
будет выглядеть примерно так:
<%@ ServiceHost Language="C#" Debug="true"
Service="WCF_Simple_Service.HelloIndigoService" %>
Атрибуты Service=
означают класс, реализующий службу, полностью соответствующую его пространству имен.
Вариант 2 - введите материал в App_Code
- создать веб-сайт в IIS
- поместите все связанные с WCF файлы
*.cs
непосредственно в папку.\App_Code
- создайте файл
*.svc
на этом веб-сайте - добавьте соответствующий
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="WithDebug">
<endpoint
address=""
binding="basicHttpBinding"
contract="SimpleWCF.IHelloIndigoService" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
В основном вы определяете свой тег <service>
- и снова: name=
обозначает класс, реализующий службу, - полностью соответствующий своему пространству имен. Он должен содержать по крайней мере одну конечную точку - конечная точка "mex" является необязательной, но очень полезна, особенно для разработки и тестирования. Он позволяет клиенту "обнаружить" службу и получить ее описание сервиса, чтобы он мог взаимодействовать с ней.
Как только ваша служба будет развернута в IIS, вы можете увидеть ее в действии с помощью инструмента, такого как WCF Test Client, который бесплатно отправляется с WCF, или SoapUI, который является универсальной утилитой тестирования SOAP (с бесплатной версией для вас).