代码之家  ›  专栏  ›  技术社区  ›  Mike K

WCF服务部署-应用程序文件保存在哪里?

  •  1
  • Mike K  · 技术社区  · 17 年前

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

    昨天我做了一个测试部署时,服务启动得很好,但我没有机会查看数据是否正常提取。问题是:我的部署测试环境(MS Server2003)与我自己的(笔记本电脑)本地测试环境完全不同。我是通过将Windows服务项目的bin\debug内容复制到服务器上并在使用installUtil.exe时引用该服务器上的.exe来部署的。但是dl的数据连接应该采用不同的连接字符串,显然,因为它应该连接到服务器上的数据库,而不是我的笔记本电脑。然而,我在部署到的目录中看到的唯一app.config是服务主机的。其他项目,如dl和bl,也有dll,但两者都没有app.config。那么,如何将dl的app.config替换为适合该enviro的app.config呢?我相信这是一个简单的问题,我只是不包括在内。

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

    2 回复  |  直到 17 年前
        1
  •  0
  •   Eugene Yokota    17 年前

    宿主环境的app.config(在本例中是托管Windows服务)包含所有模块的配置。类似地,web.config包含所有配置(如果您将其托管在IIS上)。

        2
  •  1
  •   Andy White    17 年前

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

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

    对于第二个问题,您可以在同一个service host中为同一个服务托管不同的端点。您可以在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>
    
    推荐文章