首页 > 解决方案 > 更改 Blazor 文件夹给我“找不到回退端点”

问题描述

我创建了一个默认的 Blazor 项目,并希望在同一个项目中包含一个 Web API 部分以用于原型设计。

所以我把所有的控制器和相关的东西放在一个子文件Api夹里,把 Blazor 的东西放在一个Blazor子文件夹里。

项目结构:

- Api
  - Controllers
    - AController.cs
- Blazor
  - Pages
    - _Host.cshtml
    - Counter.razor
    - Error.razor
    - FetchData.razor
    - Index.razor
  - Data
    - WeatherForecast.cs
    - WeatherForecastService.cs
  - Shared
    - MainLayout.razor
    - NavMenu.razor
  - _Imports.razor
  - App.razor
- appsettings.json
- appsettings.Development.json
- Program.cs
- Startup.cs

Startup.cs

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHealthChecks();
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSingleton<WeatherForecastService>();
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
        services.AddSwaggerGen(options =>
        {
            options.SwaggerDoc("v1", new OpenApiInfo
            {
                Title = "An API", 
                Version = "Version Yoohoo"
            });

            var xmlFileName = Assembly.GetExecutingAssembly().GetName().Name + ".xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFileName);

            options.IncludeXmlComments(xmlPath);
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });

        app.UseSwagger();
        app.UseSwaggerUI(options => options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1"));
    }
}

但是现在在启动应用程序时,我遇到了以下异常:

处理请求时发生未处理的异常。InvalidOperationException:找不到路由值指定的回退端点:{ page: /_Host, area: }。Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.DynamicPageEndpointMatcherPolicy.ApplyAsync(HttpContext httpContext,CandidateSet 候选)

我该如何解决?

标签: c#asp.net-coreblazorblazor-server-side

解决方案


您还需要更改 Razor Pages 的默认根目录,尝试在启动时添加以下代码ConfigureServices

services.Configure<RazorPagesOptions>(options => options.RootDirectory = "/Blazor/Pages");

推荐阅读