我有一个.NET Core2.0MVCAPI应用程序。应用程序可以从web根目录访问,例如localhost:51672/,localhost:51672/Home,localhost:51672/api/....我希望有一个从不同的web应用程序目录运行的选项,例如localhost:51672/custom,localhost:51672/custom/Home,localhost:51672/custom/api/...
我假设在Kestrel中或在调用dotnet run时有一些选项,但找不到它。我宁可不修改代码中的几个位置才能工作,更喜欢可配置或运行时选项,而不是必须在代码中硬连接多个位置的自定义根路径。
下面使用了除swagger之外的“自定义”根目录
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "FusionVM V1");
});
app.UseMvc( routes =>
{
routes.MapRoute(
name: "default",
template: "custom/{controller=Home}/{action=Index}/{id?}");
}
);对于web api,能够使用Contoller上的Route属性使其工作,尽管真的不希望在所有控制器中指定根路径。在dev中,在生产环境中使用"/“,可从自定义web应用程序目录中获得。
[Route("custom/api/[controller]")]
public class MyController : Controller发布于 2018-01-17 06:29:49
找到了有用的东西。在Startup.cs中添加了以下内容...
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UsePathBase("/custom");
app.UseStaticFiles("/custom");
...这适用于MVC和Web Api。对于Swagger,必须修改其json端点。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "My API");
});https://stackoverflow.com/questions/48254739
复制相似问题