【问题标题】:deploying a web application which references a class library which communicates with a WCF service部署引用与 WCF 服务通信的类库的 Web 应用程序
【发布时间】:2011-06-17 06:37:30
【问题描述】:

我有一个单独的开发环境。在我们主要托管 Web 应用程序的生产服务器上,我们部署了预编译版本的 Web 项目。

在进行开发时,我从事三个项目。一种是 WCF 服务。二、是类库项目。该库具有调用 WCF 服务的类。第三,是一个使用类库的网络项目。

最后两个项目属于一个 VS 解决方案。我在开发环境中托管 wcf 服务。此服务作为服务引用添加到我的类库。

我无法想象将 DLL(即类库项目的输出)添加到我的 Web 项目后会发生什么,并且必须部署 Web 项目。在部署时,我必须更改服务引用(svc 文件的 url 将更改,因为它必须指向生产 wcf 服务)。如何解决这个问题?将 dll 添加到 web 项目时需要注意什么?

【问题讨论】:

    标签: asp.net wcf class-library


    【解决方案1】:

    不要太担心 DLL。这将从正在运行的应用程序中获取其配置,无论是 win 表单、Web 应用程序、网站还是 Windows 服务。因此,请记住,您将 Web 服务绑定添加到哪个项目将有一个 app/web.config 包含一个 system.service 模型部分,您必须将其包含在使用该程序集并将使用该程序集的任何应用程序的配置文件中网络服务。

    要更改它在 web.config 的 system.servicemodel 部分中的绑定

    <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

    【讨论】:

    • 我希望这与将整个 system.serviceModel 节点从 app.config 复制到 web.config 相同。现在就像您说的,我可以通过您上面提到的方法手动编辑端点地址。这对我有用。谢谢。
    【解决方案2】:

    您应该知道的第一件事是放置在库项目中的配置文件不会被 .dll 使用。 DLL 将使用 Web 配置文件。所以你应该在那里配置 WCF 服务的 url。

    只需将您在 DLL 配置文件中(包含)的信息复制粘贴到 web.config。

    最好的问候

    【讨论】:

      【解决方案3】:

      只要您在 Web 应用程序中向类库添加引用,当您将 Web 应用程序项目发布到生产环境时,这两个 dll 都会被部署。至于必须更改的 WCF url,我会在 web.config 文件中的 AppSettings 中将 URL 作为键添加。

      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"];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 2018-03-13
        • 1970-01-01
        相关资源
        最近更新 更多