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

StackOverflow https://stackoverflow.com/questions/608735

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Когда вы развертываете проект, единственный 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top