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

发布于 2024-10-22 23:20:02 字数 1240 浏览 3 评论 0原文

有谁知道在 SVC 文件 ServiceHost 声明标记中指定服务类/程序集时如何定位不同的程序集?我想根据调试与发布构建定义来定位不同的程序集名称。另一方面是我使用 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

Does anyone know how to target a different assembly when specifying your Service class/assembly in a SVC file ServiceHost declaration tag? I want to target a different assembly name based on debug vs release build definitions. Another aspect of this is that I am using Autofac and the AutofacServiceHostFactory to handle DI into my service classes.

I have tried several preprocessor directive approaches but each results in a "The directive 'ServiceHost' can only be specified once". Here is the example code when I get that error.

<% #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 %>

I know I can solve this by having duplicate SVC files for each and then only deploying the appropriate SVC file based on build which is what I am currently doing, but I figure there has to be an easier way. Any/all help is very much appreciated.

I know I could handle this if I wasn't using IIS and SVC files to host my service, but I'd like to keep it IIS hosted if possible.

UPDATE 1
In searching about this more, I ran across this article that talks about using a VirtualPathProvider to dynamically generate svc output. This will probably work for what I want and I probably should have thought about it before. I still feel like there should be an easier way to do this but can't seem to find it. I'll post my how I got this to work if it does indeed work below. If you have a better approach, I'm open to all ideas.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜血缘 2024-10-29 23:20:02

我建议使用基于配置的激活(仅限 WCF 4)并使用不同的配置用于调试和发布的模板(或使用 svc 进行发布并使用 config 进行调试)。

I suggest using configuration based activation (only WCF 4) and use different config template for debug and release (or use svc for release and config for debug).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文