【问题标题】:WCF Service Deployment - Where Are the Application Files Kept?WCF 服务部署 - 应用程序文件保存在哪里?
【发布时间】:2010-10-11 03:49:16
【问题描述】:

我有一个 WCF 服务,它通过 BL 调用数据层,最终调用 SQL Server 后端。我的服务公开了各种方法/操作以从数据库中获取数据。我还为它构建了一个用于测试的主机,以及一个 Windows 服务主机,这就是我计划部署它的方式。

昨天我进行测试部署时,服务启动正常,但我没有机会查看数据是否正确提取。事情是这样的:我的部署测试环境(MS Server 2003)与我自己的(笔记本电脑)本地测试环境完全不同。我通过将 Windows 服务项目的 bin\debug 内容复制到服务器上并在使用 InstallUtil.exe 时在服务器上引用 .exe 来进行部署。但是 DL 的数据连接应该采用不同的连接字符串,显然,因为它应该连接到服务器上的数据库,而不是我的笔记本电脑。然而,我在部署到的目录中看到的唯一 app.config 是服务主机的那个。其他项目,如 DL 和 BL,也以 DLL 的形式存在,但两者都没有 app.config。那么如何将 DL 的 app.config 替换为该环境的正确配置呢?我确定这是一个简单的问题,我只是不知道。

一个相关的问题:如果我们稍后决定要使用 HTTP 主机来代替 - 或除了 - TCP,我可以运行第二台主机来驱动相同的服务吗?我是否只需要使用 IIS 部署主机并将服务节点添加到 app.configs 中?

【问题讨论】:

    标签: wcf http tcp deployment


    【解决方案1】:

    部署项目时,您将获得的唯一 app.config/web.config 是可执行项目(网站/控制台应用程序/windows 服务/windows 窗体应用程序/等项目)中的那个。 DLL 项目的任何 app.configs 都不会复制到 bin 目录中。

    您需要将配置部分从您的 DLL 项目中复制出来,并将它们放入您的服务项目 app.config 中。

    对于第二个问题,您可以在同一个 ServiceHost 中为同一个服务托管不同的端点。您可以在 Windows 服务/控制台应用程序中托管 HTTP 端点。如果您在 IIS 之外托管 HTTP,则可能需要授予用户权限以允许其打开 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>
    

    【讨论】:

      【解决方案2】:

      用于托管环境的 App.config,在本例中是托管的 Windows 服务,包含所有模块的配置。同样,如果您将 Web.config 托管在 IIS 上,则它包含所有配置。

      【讨论】:

      • 所以,例如,数据层的 app.config 的任何内容,例如连接字符串,都应该重新安置在服务的配置中吗? IOW,来自任何模块的任何配置内容都需要在部署时位于主机的配置中。
      • 对。您将所有内容合并到一个配置文件中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多