【问题标题】:WCF Service in Separate Assembly单独程序集中的 WCF 服务
【发布时间】:2010-06-18 16:40:35
【问题描述】:

在单独的程序集中创建 WCF 服务,然后在同一解决方案中通过 Web 项目公开其端点的正确方法是什么?

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    我是这样做的:

    • 在 类库 类型的新项目中构建您的 WCF 服务
    • 将您的接口和实现放在这个库中的命名空间中,例如MyServiceLib
    • 向您的 Web 项目添加一个像 MyService.svc 这样的文件,其中只有一个语句,ServiceHost 指令:

      <%@ ServiceHost Service="MyServiceLib.MyService" %>
      

      其中MyServiceLib 是WCF 服务的命名空间名称,MyService 是服务实现类的名称。 (这个简单的设置适用于将服务部署为已编译程序集的情况(例如在 Bin 目录中)。如果您想使用源代码部署并在第一次请求时进行编译,您需要将更多属性添加到服务主机指令(编程语言、源文件等)

    • 将服务的配置放入web.config&lt;system.serviceModel&gt;部分。

    【讨论】:

    • 帮助提示:如果您尝试将上述链接粘贴到 .svc 文件中,Visual Studio 将尝试通过向 'ServiceHost' 元素添加一个空值 "" 来帮助您(这样看起来像 ServiceHost="")。这将破坏您启动服务的尝试,并显示一条消息“解析器错误消息:该指令的名称丢失。”这很容易通过删除空值来解决。
    【解决方案2】:

    我更喜欢将我的 contracts 和 implementations 分开在他们自己的程序集中,这有助于在未来基于相同的合约来替代实现。

    【讨论】:

      【解决方案3】:

      如果您同时控制服务器和客户端,则可以使用此链接中描述的方法:http://www.dnrtv.com/default.aspx?showNum=122

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        相关资源
        最近更新 更多