c# – 我可以在Sitecore的共享环境中运行的两个不同的.NET MVC站点中使用ServiceStack吗?

我们将使用Sitecore构建的ASP.NET MVC应用程序提供给客户端,该客户端将应用程序部署到多站点/租户Sitecore安装.

我们在大多数项目中都大量使用ServiceStack,但现在遇到了一个问题. Sitecore设置中的另一个应用程序也使用ServiceStack.这会导致错误:

[InvalidDataException: AppHostBase.Instance has already been set]

这真的很有道理,因为Sitecore安装中所有应用程序的所有文件都在磁盘上的同一物理文件夹中.意思是我们共享DLL和一切.

所以这个其他项目在我们之前初始化,然后当我们尝试注册我们的服务时,我们得到了上述错误.

有什么方法可以解决这个问题吗?我可以以某种方式在现有的AppHostBase.Instance上注册我的服务吗?

有两件事可能值得注意:

>我们对Sitecore环境的设置没有任何影响.
>如果必须在两个项目中完成某些工作,我们可以使用ServiceStack与其他团队一起工作.

最佳答案 您最好使用
Services you want registered in your AppHost构造函数告诉ServiceStack所有程序集,例如:

public class AppHost : AppHostBase
{
    //Tell ServiceStack the name of your app and which assemblies to scan for services
    public AppHost() : base("Hello ServiceStack!", 
       typeof(ServicesFromDll1).Assembly,
       typeof(ServicesFromDll2).Assembly
       /*, etc */) {}

    public override void Configure(Container container) {}
}

但您可以在ServiceStack之外动态注册服务:

HostContext.ServiceController.RegisterService(typeof(MyService));

或者在装配中注册所有服务:

HostContext.ServiceController.
    RegisterServicesInAssembly(typeof(MyService).Assembly);
点赞