Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core ServiceStack和Kestrel:使用.Map函数根据路径路由到ServiceStack实例(中间件)?_.net Core_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Kestrel - Fatal编程技术网 servicestack,kestrel,.net Core,servicestack,Kestrel" /> servicestack,kestrel,.net Core,servicestack,Kestrel" />

.net core ServiceStack和Kestrel:使用.Map函数根据路径路由到ServiceStack实例(中间件)?

.net core ServiceStack和Kestrel:使用.Map函数根据路径路由到ServiceStack实例(中间件)?,.net-core,servicestack,kestrel,.net Core,servicestack,Kestrel,我们正在研究.NETCore和Kestrel,并使用ServiceStack 使用Extensionmethod添加servicestack很容易: app.UseServiceStack(new AppHost { AppSettings = new NetCoreAppSettings(Configuration) }); 然而,我们正在考虑启动几个不同的AppHostBase实现(因此我们可以选择以不同的方式处理问题),但它们都共享相同的Web服务器、端口等,因为Kestr

我们正在研究.NETCore和Kestrel,并使用ServiceStack

使用Extensionmethod添加servicestack很容易:

app.UseServiceStack(new AppHost { 
    AppSettings = new NetCoreAppSettings(Configuration) 
}); 
然而,我们正在考虑启动几个不同的AppHostBase实现(因此我们可以选择以不同的方式处理问题),但它们都共享相同的Web服务器、端口等,因为Kestrel是基础

这样一来,Kestrel应该将传入的http请求路由到正确的AppHostBase,而使用

app.Map("/map2", HandleMapTest2);
但是,我不确定如何使用Servicestack实现这一点。Servicestack中没有映射的ext方法,使用上面的.Map函数将第二个参数作为
操作

我已经看过了,我看到AppHostBase.Bind(IAApplicationBuilder)最终将实现一个
app.Use(…)
,这不是我们想要的

那么,如何使用Map函数并将请求路由到不同的AppHostBase实现呢

更新 Mythz说只有一个ServiceStack实例是可能的。但是,如何使用Map将特定的子路径路由到一个ServiceStack实例,例如“/ss”到ss实例,而其他东西到别处

但是,我们正在考虑启动几个不同的AppHostBase 实现

您不能有多个ServiceStack的AppHost,一个.NET核心进程中只能有一个单一实例

如果您的服务实现位于不同的程序集中,则可以

将ServiceStack配置为在不同路径上运行的方法是设置
Config.HandlerFactoryPath
,例如:

SetConfig(new HostConfig {
    HandlerFactoryPath = "/map2"
})

是的,我记得你在其他帖子上说过。这太糟糕了,因为这将是一个很好的功能,能够启动其中的几个,然后可以为每个“模块”启动一个,并且该模块可以定义它的on-PreRequestFilters、GlobalFilters和其他东西。因此,假设我只启动一个ServiceStack实例,但我无论如何都需要一个映射,所以路径“/ss”路由到ServiceStack实例,而其他东西的路由可能不同。那么我该怎么做呢?@Ted这就是我的答案,答案。那么,不应该在ServiceStack之前,在Startup.cs(Kestrel)部分配置它吗?您提供的代码在ServiceStack中,对吗?@Ted这就是ServiceStack中的一贯做法,在所有受支持的主机/平台中都是如此。