2009-03-03 2 views
1

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

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

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

ответ

0

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

+0

Итак, что-нибудь для, скажем, app.config слоя данных, как и строка соединения, должно быть заменено в конфигурации службы вместо этого? IOW, любые файлы конфигурации из любого из модулей должны находиться в конфигурации хоста при развертывании. –

+0

Справа. Вы объединяете все в один файл конфигурации. –

1

Когда вы развертываете проект, вы получите только файл app.config/web.config, который находится в вашем исполняемом проекте (приложение веб-сайта/консольного приложения, окна/окно форм и т. Д.). Любые проекты 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>