首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从自定义web应用程序目录运行.NET核心API应用程序,而不仅仅是根目录?

如何从自定义web应用程序目录运行.NET核心API应用程序,而不仅仅是根目录?
EN

Stack Overflow用户
提问于 2018-01-15 06:19:11
回答 1查看 395关注 0票数 0

我有一个.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之外的“自定义”根目录

代码语言:javascript
复制
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应用程序目录中获得。

代码语言:javascript
复制
[Route("custom/api/[controller]")]
public class MyController : Controller
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 06:29:49

找到了有用的东西。在Startup.cs中添加了以下内容...

代码语言:javascript
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UsePathBase("/custom");
    app.UseStaticFiles("/custom");
...

这适用于MVC和Web Api。对于Swagger,必须修改其json端点。

代码语言:javascript
复制
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "My API");
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48254739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档