基于构建定义的不同WCF服务组件

时间:2011-03-18 14:06:35

标签: wcf preprocessor autofac

在SVC文件ServiceHost声明标记中指定Service类/程序集时,是否有人知道如何定位不同的程序集?我想根据调试版本和发布版本定义来定位不同的程序集名称。另一个方面是我使用Autofac和AutofacServiceHostFactory来处理我的服务类中的DI。

我尝试了几种预处理程序指令方法,但每种方法都会导致“指令'ServiceHost'只能指定一次”。这是我收到错误时的示例代码。

<% #if DEBUG %>
    <%@ ServiceHost
        Service="MyNamspace.TestService, MyNamspace_DEBUG"
        Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>
<% #else %>
    <%@ ServiceHost
        Service="MyNamspace.TestService, MyNamspace"
        Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>
<% #endif %>

我知道我可以通过为每个文件提供重复的SVC文件来解决这个问题,然后只根据我正在进行的构建部署相应的SVC文件,但我认为必须有一种更简单的方法。非常感谢任何/所有帮助。

我知道如果我没有使用IIS和SVC文件来托管我的服务,我可以处理这个问题,但是如果可能的话我想保持IIS托管。

更新1 在搜索更多内容时,我遇到了这篇文章,讨论了如何使用VirtualPathProvider动态生成svc输出。这可能适用于我想要的东西,我之前可能应该考虑过。我仍然觉得应该有一个更简单的方法来做到这一点,但似乎无法找到它。如果它确实在下面工作,我会发布我的工作方式。如果你有更好的方法,我会接受所有的想法。

http://social.msdn.microsoft.com/Forums/en/wcf/thread/350f2cb6-febd-4978-ae65-f79735d412db

1 个答案:

答案 0 :(得分:2)

我建议使用configuration based activation(仅限WCF 4)并使用不同的配置模板进行调试和发布(或使用svc进行发布,使用config进行调试)。