繁体   English   中英

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

[英]Can I use ServiceStack in two different .NET MVC sites running in a shared environment on Sitecore?

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

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

[InvalidDataException: AppHostBase.Instance has already been set]

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

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

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

有两件事可能值得注意:

  1. 我们对Sitecore环境的设置没有任何影响。

  2. 如果必须在两个项目中完成某些事情,我们可以使用ServiceStack与其他团队一起工作。

您最好告诉ServiceStack所有具有您想要在AppHost构造函数中注册的服务的程序集,例如:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM