Развертывание службы WCF - где хранятся файлы приложения? - PullRequest
1 голос
/ 04 марта 2009

У меня есть служба WCF, которая через BL вызывает уровень данных и, в конечном счете, серверную часть SQL Server. Мой сервис предоставляет различные методы / операции для получения данных из базы данных. Я также создал для него хост для тестирования и хост службы Windows, и именно так я планирую его развернуть.

Вчера, когда я выполнял тестовое развертывание, служба запустилась нормально, но у меня не было возможности проверить, правильно ли загружаются данные. Вот в чем дело: Моя среда тестирования развертывания (MS Server 2003) полностью отличается от моей собственной локальной тестовой среды (ноутбука). Я развернул, скопировав содержимое bin \ debug проекта Windows Service на сервер и указав там файл .exe, когда использовал InstallUtil.exe. Но подключение для передачи данных для DL должно принимать другую строку подключения, очевидно, так как оно должно подключаться к базе данных на сервере, а не к моему ноутбуку. Тем не менее, единственный app.config, который я вижу в каталоге, в котором я развернут, - это каталог для хоста службы. Другие проекты, такие как DL и BL, также представлены в виде DLL, но для них нет ни app.config. Так как же заменить app.config для DL на правильный для этого enviro? Я уверен, что это простая проблема, на которую я просто не намекаю.

Смежный вопрос: если позже мы решим, что хотим использовать хост HTTP вместо - или в дополнение к - TCP, могу ли я запустить второй хост, отключив эту же службу? Мне просто нужно развернуть хост с IIS и добавить сервисный узел в app.configs?

Ответы [ 2 ]

1 голос
/ 14 марта 2009

При развертывании проекта вы получите единственный файл app.config / web.config, который находится в вашем исполняемом проекте (веб-сайт / консольное приложение / служба Windows / приложение Windows Forms / проект. Любой app.configs для проектов DLL не будет скопирован в каталог bin.

Вам нужно будет скопировать разделы конфигурации из ваших проектов DLL и поместить их в ваш сервисный проект app.config.

По второму вопросу вы можете разместить разные конечные точки для одной и той же службы в одном ServiceHost. Вы можете разместить конечную точку HTTP в приложении службы Windows / консоли. Если вы размещаете HTTP за пределами IIS, вам может потребоваться предоставить разрешения пользователю, чтобы он мог открыть порт HTTP. (см. http://msdn.microsoft.com/en-us/library/ms733768.aspx). Для HTTP ваша жизнь может быть проще для хостинга в IIS, но он работает в простом ServiceHost.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
0 голосов
/ 04 марта 2009

App.config для среды размещения, в данном случае управляемой службы Windows, содержит конфигурацию для всех ваших модулей. Точно так же Web.config содержит все конфигурации, если вы размещаете его в IIS.

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