Как мне сгенерировать файл .svc? - PullRequest
22 голосов
/ 29 марта 2012

Я создал свой первый сервис WCF и протестировал его на своем компьютере, и он работает.

Представленные файлы - это интерфейс, реализация этого интерфейса и файл app.config.

Теперь, когда пришло время разместить это на реальном сервере с IIS, мне сказали, что IIS ищет файл .svc при получении входящих вызовов.

Вот что я нашел:

Службы WCF, размещенные в IIS, представлены в виде файлов специального содержимого (файлы .svc) внутри приложения IIS. Эта модель аналогична тому, как страницы ASMX представляются внутри приложения IIS в виде файлов .asmx. Файл .svc содержит специфическую для WCF директиву обработки (@ServiceHost), которая позволяет инфраструктуре размещения WCF активировать размещенные службы в ответ на входящие сообщения.

Может кто-нибудь подсказать мне, как я могу создать этот файл, чтобы я мог разместить его?

Спасибо!

Ответы [ 2 ]

21 голосов
/ 29 марта 2012

Следует помнить, что IIS - это, прежде всего, веб-сервер, а WCF-хост - во-вторых.

Работа веб-сервера заключается в отображении данных на основе входящего запроса. Большая часть этих данных является содержимым (путь запроса коррелируется непосредственно с файлом на сервере), но в случае службы WCF IIS необходимо знать, куда идти (таким образом, файл SVC и «директивы» для IIS вращаться) до службы).

Все, что делает файл SVC, говорит, что на /x/y/z.svc у меня есть служба WCF, которая способна много больше, чем просто страницы на стороне сервера и файлы содержимого. Поэтому, пожалуйста, раскрутите его, сделайте его доступным и разрешите обработку моих входящих соединений.

Если бы это была служба WCF, размещенная на ее собственном выделенном порту, это была бы другая история, поскольку она больше не конкурировала с дополнительными запросами на /Styles/base.css в дополнение к /MyService/GetSomeObject/.

12 голосов
/ 29 марта 2012

IIS Hosted .svc файл состоит из директивы и атрибута @ ServiceHost , Service .

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

Значением атрибута Service является имя типа CLR вашей реализации службы. Использование этой директивы в основном эквивалентно созданию хоста службы с использованием следующего кода в вашей собственной консольной программе.

new ServiceHost(typeof(MyNamespace.MyServiceImplementationTypeName ));

И если ваше собственное приложение использует конфигурацию WCF, такую ​​как «конечная точка», «привязка» и т. Д. В app.config , вы также можете поместить это в web.config, Служба, размещенная в IIS, использует те же элементы конфигурации и синтаксис, что и службы WCF, размещенные вне IIS. ( За исключением случаев, когда вы не можете контролировать адрес базовой / конечной точки в службе, размещенной на IIS. ) И поместите предварительно скомпилированный файл .dll в каталог приложения \ bin вашего сайта IIS.

А адрес службы, размещенной на IIS, будет адресом файла .svc. (http://localhost/Application1/MyService.svc).

Пожалуйста, проверьте ниже MSDN - Развертывание IIS-службы WCF .

http://msdn.microsoft.com/en-us/library/aa751792.aspx

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