服务栈重定向到元数据
Servicestack redirect to metadata
我有以下问题:我有一个使用 ServiceStack 的 Web 服务应用程序。我想注册为基本路径“/api”,但即使我将 DefaultRedirectPath 设置为“/api/metadata”,当我启动应用程序时它也不会自动重定向(如果我键入“/api/metadata" 所有作品)
谁能帮我?
这是我在 AppHost 中的代码
public override void Configure(Container container)
{
SetConfig(new HostConfig
{
DefaultRedirectPath = "/api/metadata"
});
}
public class Startup
{
public IConfiguration Configuration { get; }
public Startup()
{
Configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseServiceStack(new AppHost
{
PathBase = "/api",
AppSettings = new NetCoreAppSettings(Configuration)
});
}
}
提前致谢,抱歉我的英语不好
首先,我会考虑不使用 disable the new /api route 的 /api
PathBase。例如。如果您没有 /api
PathBase,您将自动能够从 /api/Hello
.
调用 Hello API
但是,如果您仍想在自定义 /api
路径上托管 ServiceStack,请知道这是 ServiceStack 将被挂载的路径,即 ServiceStack 能够接收任何请求的路径。
这也意味着你应该只使用 /metadata
它将从 ServiceStack 的安装位置重定向,所以如果你有:
public class AppHost : AppHostBase
{
public AppHost() : base("MyApp", typeof(MyServices).Assembly) {}
public override void Configure(Container container)
{
SetConfig(new HostConfig {
DefaultRedirectPath = "/metadata"
});
}
}
然后调用 https://localhost:5001/api
将重定向到 https://localhost:5001/api/metadata
。
ServiceStack 只能看到来自 /api
安装位置的请求,因此如果您想将 /
路由重定向到元数据页面,您需要注册自定义 ASP.NET执行此操作的核心处理程序,例如:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseServiceStack(new AppHost {
PathBase = "/api",
});
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapGet("/", async context =>
context.Response.Redirect("/api/metadata"));
});
}
Note: you no longer need to set NetCoreAppSettings()
which is populated by default
我有以下问题:我有一个使用 ServiceStack 的 Web 服务应用程序。我想注册为基本路径“/api”,但即使我将 DefaultRedirectPath 设置为“/api/metadata”,当我启动应用程序时它也不会自动重定向(如果我键入“/api/metadata" 所有作品)
谁能帮我?
这是我在 AppHost 中的代码
public override void Configure(Container container)
{
SetConfig(new HostConfig
{
DefaultRedirectPath = "/api/metadata"
});
}
public class Startup
{
public IConfiguration Configuration { get; }
public Startup()
{
Configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseServiceStack(new AppHost
{
PathBase = "/api",
AppSettings = new NetCoreAppSettings(Configuration)
});
}
}
提前致谢,抱歉我的英语不好
首先,我会考虑不使用 disable the new /api route 的 /api
PathBase。例如。如果您没有 /api
PathBase,您将自动能够从 /api/Hello
.
但是,如果您仍想在自定义 /api
路径上托管 ServiceStack,请知道这是 ServiceStack 将被挂载的路径,即 ServiceStack 能够接收任何请求的路径。
这也意味着你应该只使用 /metadata
它将从 ServiceStack 的安装位置重定向,所以如果你有:
public class AppHost : AppHostBase
{
public AppHost() : base("MyApp", typeof(MyServices).Assembly) {}
public override void Configure(Container container)
{
SetConfig(new HostConfig {
DefaultRedirectPath = "/metadata"
});
}
}
然后调用 https://localhost:5001/api
将重定向到 https://localhost:5001/api/metadata
。
ServiceStack 只能看到来自 /api
安装位置的请求,因此如果您想将 /
路由重定向到元数据页面,您需要注册自定义 ASP.NET执行此操作的核心处理程序,例如:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseServiceStack(new AppHost {
PathBase = "/api",
});
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapGet("/", async context =>
context.Response.Redirect("/api/metadata"));
});
}
Note: you no longer need to set
NetCoreAppSettings()
which is populated by default