2014-01-25 5 views
0

Я создал базовый проект библиотеки WCF и развернул его на локальную установку IIS (7.5). Всякий раз, когда я пытаюсь перейти к нему через localhost/TestWcfServiceLibrary /, я просто получаю представление в виде каталога.Как развернуть WCF для IIS и оставить его в покое

Однако, если я запускаю службу в режиме отладки из визуальной студии, я получаю всплывающее окно системного лотка, сообщающее мне, что оно было размещено, а затем, когда я возвращаюсь в localhost/TestWcfServiceLibrary /, я могу видеть WSDL. Как только я останавливаю режим отладки и обновляю браузер, я возвращаюсь к представлению каталога.

Базовый адрес в файле конфигурации - localhost/TestWcfServiceLibrary /, поэтому я не понимаю, почему я вижу это поведение.

Интересно, если я перейду к localhost/TestWcfServiceLibrary/service.service1.svc (Файл, который не существует) Я получаю wsdl, даже если режим отладки отключен.

У меня есть 2 вопроса.

1) Почему режим отладки в визуальной студии вообще влияет на то, могу ли я получить доступ к wsdl из пути localhost/TestWcfServiceLibrary? (Я подозреваю, что это связано с тем, что служба wcf технически не размещена на «localhost», она размещена на сервере, поэтому адрес действительно не существует, пока не включен режим отладки, поэтому я фактически подключен к временно размещенной версии, что визуальная студия предоставляет и НЕ настоящий веб-сервис IIS?)

2) При развертывании библиотеки служб WCF непосредственно в IIS всегда правильно указывать на файл .svc с пространством имен и именем класса вашего контракта на обслуживание, даже хотя этот файл действительно не существует (я предполагаю, что это волшебство, которое IIS выполняет для вас)?

ответ

1

1) Вы можете видеть, где находится ваш веб-сервис на вкладке «Веб» свойств вашего проекта WCF. Поведение по умолчанию в VS.NET заключается в размещении вашего проекта в IISExpress, мини-IIS, который поставляется с Visual Studio.NET, и который запускается автоматически при запуске службы. Итак, если вы не изменили значение по умолчанию, то да, ваша служба технически размещена на «localhost», но не на порту 80 в IIS, а на другом порту в IISExpress (точный порт меняется) ... Я предполагаю, что это IISExpress, что решает дать вам wsdl при переходе на служебный адрес. Это не поведение по умолчанию для IIS. Это покажет содержимое папки, если просмотр каталога включен в файле web.config, и в противном случае вы получите ошибку 404 (не найдена).

2) Существует два способа активировать службу WCF в IIS. Либо вы предоставляете реальный файл .svc, в котором указывается, какую службу IIS следует запустить. Либо вы укажете, что в узле вашего файла web.config. Это часть .svc URL-адреса, которая запускает IIS для запуска службы.

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