【问题标题】:.NET Core Redirect to Controller in another Project under same Solution.NET Core 重定向到同一解决方案下另一个项目中的控制器
【发布时间】:2020-01-25 21:54:04
【问题描述】:

是否可以在不使用绝对 url 的情况下重定向到 .NET Core 中同一解决方案中的另一个项目?

我之所以这么问,是因为我看到很多 Web 应用程序都有 billing.website.com 仅提供计费功能,而 app.website.com 则包含大部分应用程序。

我找到了How to use a controller in another assembly in ASP.NET Core MVC 2.0?,但不清楚用户 cookie 是否已超时,我应该将用户重定向到何处以及如何重定向?

如果我有一个项目将在处理身份验证的 url account.website.com 下,我应该如何在我的 Startup.cs 中设置它?

services.ConfigureApplicationCookie(options =>
{
    // Cookie settings
    options.LoginPath = "accounts.website.com";
    options.AccessDeniedPath = Environment.GetEnvironmentVariable(AccessDeniedPath);
    options.SlidingExpiration = true;
});

【问题讨论】:

  • 当 .Net 项目发布到服务器时,没有解决方案控制的关系,这只是为了让开发人员在 IDE 中组织他们的项目。我建议使用带有其他项目完整 url 的配置应用程序设置。

标签: c# asp.net-mvc asp.net-core .net-core asp.net-core-mvc


【解决方案1】:

它必须是完整的绝对 URL,因为无论项目是否存在于同一个解决方案中,在运行时,它们都是完全独立且不同的 Web 应用程序。一个人不知道如何托管另一个人,事实上,他们可以在任何 IP、主机名、域、子域和端口下运行。

您应该通过配置来处理这个问题。设置如下:

{
    "LoginURL": "https://accounts.website.com/login"
}

然后你可以这样做:

services.ConfigureApplicationCookie(options =>
{
    options.LoginPath = Configuration["LoginURL"];
    ...
});

然后,您只需要部署特定于环境的 JSON 或环境变量来覆盖每个环境的配置值。例如,在开发时可能改为https://localhost:44301/login

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多