【问题标题】:ASPNET Core 3.1 Razor Pages with virtual directory in kestrelkestrel 中带有虚拟目录的 ASPNET Core 3.1 Razor 页面
【发布时间】:2020-08-10 13:05:54
【问题描述】:

我有两个使用 Aspnet core 3.1 Razor Pages 开发的网站,由 kestrel 托管。示例:

https://localhost:50001/*
https://localhost:50002/*

在调试模式下运行没有问题。但是在生产中,我想做旧的 IIS 方法,我们可以在 URL 中添加一个虚拟目录。示例:

https://example.com/MyAppA/*
https://example.com/MyAppB/*

我知道 kestrel 不能这样做,但我也不能使用 IIS,因为我需要在非 windows 环境中部署这些网站。

我是否可以修改 Razor 页面中的路由以在我的代码中添加 MyAppA 或 MyAppB?

这样做最简单的方法是将 [solution]\Pages\* 中的所有页面移动到 [solution]\Pages\MyAppA\*,但我会将其保留为最后一个选项。

谢谢

【问题讨论】:

  • 这些网站是在不同的 ASP.NET 项目中吗?如果是这样,您可能需要一个反向代理来处理请求,然后再将它们转发到服务。

标签: asp.net-core kestrel-http-server


【解决方案1】:

如何使用PathBase中间件,请在此处尝试答案https://stackoverflow.com/a/57494684/4076996

【讨论】:

  • 谢谢!这正是我需要的
【解决方案2】:

你可以试试这个,

public void ConfigureServices(IServiceCollection services)
{
      services.AddRazorPages(options =>
      {
           //this is page level so you need to add every page
           options.Conventions.AddPageRoute("/index", "MyAppA");
           options.Conventions.AddPageRoute("/test1", "MyAppA/test1");
      });
}

【讨论】:

  • 这只是将默认根目录更改为 MyAppA(意味着 MyAppA 必须在此设置之前存在),而不是将 MyAppA 附加到 URL 中
猜你喜欢
  • 2019-06-06
  • 1970-01-01
  • 2020-01-30
  • 2020-10-20
  • 1970-01-01
  • 2020-05-06
  • 2021-02-04
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多