如何在没有子域的情况下将 WebForms 和 Blazor 混合在一个域 www.xyz.com 中?

Zhi Lv - MSFT 32,446 信誉分 Microsoft 供应商
2024-03-07T02:31:03.43+00:00

我们目前正在 ASP.NET WebForms 来展示所有的模块,包括首页、管理和不同客户端类型的各种控制面板。

显然,我们想要迁移到 ASP.NET Blazor,但在第一阶段,我们只想迁移首页

这意味着,我们将有一个新的 Blazor 类型的项目,其中首页将驻留,旧的 WebForms 项目中,管理和控制面板将驻留其中。

我的问题是,我们如何在没有子域的情况下将这两种技术混合在一个域 www.xyz.com 中? 欢迎任何建议。

谢谢!

注意: 此问题总结整理于:从 WebForms 迁移到 Blazor - Microsoft Q&A

Blazor
Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
23 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,746 信誉分 Microsoft 供应商
    2024-03-08T02:07:03.04+00:00

    你好,

    使用 IIS 反向代理或 Yarp,它们都可以满足您的要求。 如果您使用的是 Yarp,则可以创建一个前端 asp.net 核心应用程序,然后将 yarp 规则放入其中。 该规则包含两个条件,它们会根据需要将 url 重写到不同的应用程序,例如将前端重写到 blazor 的应用程序,将其他 url 重写到旧的 WebForms。

    例如:

    1.创建新的 asp.net 核心应用程序并从 Nuget 安装 Yarp.ReverseProxy 包

    2.在应用程序中添加用法

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddReverseProxy()
        .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
    var app = builder.Build();
    app.MapReverseProxy();
    app.Run();
    

    3.修改appsettings.json如下: 如果 url 包含管理员,它将转到 webform URL,如果 url 不包含任何内容,它将转到 blazor。

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "ReverseProxy": {
        "Routes": {
          "route1": {
            "ClusterId": "cluster1",
            "Order": 100, // Lower numbers have higher precedence
            "Match": {
              "Path": "admin/{**catch-all}"
            }
          },
          "minimumroute": {
            // Matches anything and routes it to www.example.com
            "ClusterId": "minimumcluster",
            "Order": 200, // Lower numbers have higher precedence
            "Match": {
              "Path": "{**catch-all}"
            }
          }
        },
        "Clusters": {
          "cluster1": {
            "Destinations": {
              "destination1": {
                "Address": https://webform.com/
              }
            }
          },
          "minimumcluster": {
            "Destinations": {
              "example.com": {
                "Address": http://www.blazor.com/
              }
            }
          }
        }
      }
    }
    

    关于 yarp 如何工作的更多详细信息,您可以参考YARP 入门和 从 ASP.NET 到 ASP.NET Core 的增量更新 | Microsoft Learn


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。