IIS中的WCF服务实例PER主机

时间:2016-12-22 18:46:10

标签: wcf

我目前正在IIS中的MVC应用程序中托管WCF服务。

路线:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.Add(new ServiceRoute("api/SitemapService", new MyServiceHostFactory(), typeof(IMyService)));

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

服务主机工厂:

    public class MyServiceHostFactory : ServiceHostFactory
    {
        public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
        {
            //I figured I could use the baseAddresses here to determine the tenant being requested, but baseAddresses is always the first binding in IIS.
        }
    }

在IIS中,我有两个绑定:

local.wcftest.com:80
localtenant.wcftest.com:80

我有一个覆盖CreateHostService方法的ServiceHostFactory实现。在此方法中,我们收到baseAddresses。无论我在web.config中尝试过什么配置,我都无法获得使用正确基址的服务实例。 baseAddresses始终包含1个地址,并且是IIS中列出的第一个绑定的地址。在这种情况下,baseAddress很重要,因为基于租户,我需要向服务注入一个具有正确注册的IoC容器。

这是我可以实现的吗?我觉得我已经尝试了很多东西,但我不确定在这一点上还有什么可以尝试,并且觉得这应该是一件简单的事情。

我在web.config中确实有multiSiteBindingsEnabled为true。

0 个答案:

没有答案