具有多租户的 Orchard 模块中的 WCF 服务

WCF Service In Orchard Module With Multi Tenancy

我有一个在模块中定义的 WCF 服务。当我们尝试从非默认租户调用此服务时,内容管理器始终引用我们的默认租户设置。在调试中,在 OrchardServiceHostFactory 内部, 我注意到它最终获得了默认租户的设置,因为传递给 CreateServiceHost 方法的基址始终是我们的默认租户 uri。

考虑到我对 WCF 不是很熟悉,是否有一个配置选项是我遗漏的导致使用默认租户地址而不是非默认租户地址创建 WCF 服务?

相关代码:

private static readonly Route _SITEMAP_SERVICE_ROUTE = new ServiceRoute("api/SitemapService", new OrchardServiceHostFactory(), typeof(ISitemapService))
{
    DataTokens = new RouteValueDictionary
    {
        {
            "area", "Project.Localization"
        }
    }
};

public interface ISitemapService : IOrchardSitemapService, IDependency
{
}

[ServiceContract]
public interface IOrchardSitemapService
{
    [OperationContract]
    int GetNavigableContentCount();

    [OperationContract]
    List<SitemapEntry> GetNavigableContent();
}

我能够通过向 IIS 添加一个指向相同文件系统位置并使用相同应用程序池的附加站点来解决此问题。然后这个新站点引用非默认的租户,现在将使用正确的基地址创建服务。