我们将使用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);