развертывание веб-приложения, которое ссылается на библиотеку классов, которая взаимодействует со службой WCF - PullRequest
2 голосов
/ 28 января 2011

У меня есть отдельная среда для разработки. На моем рабочем сервере, где мы в основном размещаем веб-приложения, мы развертываем предварительно скомпилированную версию веб-проекта.

Во время разработки я работаю над тремя проектами. Одним из них является служба WCF. Во-вторых, это проект библиотеки классов. В этой библиотеке есть классы, которые делают вызовы службы WCF. И, в-третьих, это веб-проект, который использует библиотеку классов.

Последние два проекта относятся к одному решению VS. Я размещаю сервис wcf в среде разработки. Этот сервис добавлен как сервисная ссылка на мою библиотеку классов.

Я не могу представить себе, что произойдет, когда я добавлю DLL (то есть вывод проекта библиотеки классов) в свой веб-проект, и веб-проект необходимо развернуть. Во время развертывания я должен изменить ссылку на службу (URL-адрес файла svc изменится, поскольку он должен указывать на рабочую службу wcf). Как это сделать? О чем нужно заботиться при добавлении dll в веб-проект?

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Не беспокойтесь о DLL.Это займет его конфигурацию из приложения, в котором оно выполняется, будь то формы win, веб-приложение, веб-сайт или служба Windows.Таким образом, с учетом того, в каком проекте вы когда-либо добавляли привязку веб-службы, будет приложение / web.config, содержащее раздел модели system.service, который вы должны включить в файл конфигурации любых приложений, которые используют эту сборку и будут использоватьвеб-сервис.

Чтобы изменить привязку, он находится в разделе system.servicemodel вашего web.config

<client>
    <endpoint address="http://blahblah:8000/blah" binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_Service1" contract="GenService.Service"
        name="WSHttpBinding_Service" />
</client>

Лично я использую преобразования конфигурации и публикую профили для развертывания сайтов, чтобы избавиться от шума.настройки файлов web.config.Так что у меня будет Web.Production.config

<system.serviceModel>
    <client>
        <endpoint name="WSHttpBinding_Service" address="http://production/blah" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(address)" />
    </client>
</system.serviceModel>

Руководство здесь http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

0 голосов
/ 28 января 2011

Первое, что вы должны знать, это то, что файл конфигурации, помещенный в проект библиотеки, не будет использоваться .dll.DLL будет использовать файл веб-конфигурации.Поэтому вы должны настроить там URL-адрес службы WCF.

Просто скопируйте и вставьте информацию из (включенной), имеющуюся в файле конфигурации DLL, в файл web.config.

Best Regards

0 голосов
/ 28 января 2011

Пока вы добавляете ссылку на вашу библиотеку классов в вашем веб-приложении, обе библиотеки DLL будут развернуты при публикации проекта вашего веб-приложения в Production. Что касается URL-адреса WCF, который должен измениться, я бы добавил URL-адрес в качестве ключа в ваши AppSettings в файле web.config.

Web.config:

<configuration>
   <appSettings>
      <add key="WCF_URL" value="http://url to wcf service"/>
   </appSettings>
//snip..
</configuration>

Код:

// Establish the proxy with the WCF Service that you added as a Web Reference in your solution
WCFService.<class> myWCFService= new WCFService.<class>();
// Check the web.config for the URL to WCF web service
myWCFService.Url = ConfigurationManager.AppSettings["WCF_URL"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...