Làm cách nào để định cấu hình lõi dotnet 3 để phục vụ React SPA trong khi sử dụng Http.sys và URLPrefix?


9

Sau khi thay đổi URLPrefix, tôi gặp lỗi sau:

Phần mềm trung gian trang mặc định SPA không thể trả về trang mặc định '/index.html' vì không tìm thấy và không có phần mềm trung gian nào khác xử lý yêu cầu.

Do đó, cần phải có một cái gì đó để nói với lõi dotnet về tiền tố nhưng dường như tôi không thể tìm thấy sự kết hợp đúng của các cài đặt.

Giúp nhiều đánh giá cao.

Mã dưới đây:

HostBuilder được thiết lập với:

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseHttpSys(options =>
        {
            options.AllowSynchronousIO = false;
            options.Authentication.Schemes = AuthenticationSchemes.None;
            options.Authentication.AllowAnonymous = true;
            options.MaxConnections = null;
            options.MaxRequestBodySize = 30000000;
            options.UrlPrefixes.Add("http://localhost:5005/Product/Site");
        });
        webBuilder.UseStartup<Startup>();
    });

Cấu hình dịch vụ:

public override void ConfigureServices(IServiceCollection services)
{
  services.AddRazorPages();

  services.AddSpaStaticFiles(configuration =>
  {
    configuration.RootPath = "ClientApp/build";
  });

  services.AddMvc();
  services.AddResponseCompression(opts =>
  {
    opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
              new[] { "application/octet-stream" });
  });
}

Và sau đó Cấu hình là:

      app.UseSpaStaticFiles();
      app.UseRouting();
      app.UseEndpoints
      (
        endpoints =>
        {
          endpoints.MapControllerRoute(
              name: "default",
              pattern: "{controller}/{action=Index}/{id?}");
        }
      );

      app.UseSpa(spa =>
      {
        //spa.Options.DefaultPage = reactPath + "/index.html";
        spa.Options.DefaultPage = "/index.html";

        spa.Options.SourcePath = "ClientApp";


      });

Câu trả lời:


3

Đây dường như là một vấn đề trong đó đường dẫn đến các tệp tĩnh thực tế bị mất. Trong StaticFilesOptions của bạn đảm bảo rằng bạn đang cung cấp cho nhà cung cấp Tệp đường dẫn đến tệp index.html của bạn.

spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
            {
              FileProvider = new PhysicalFileProvider
              (
                @"<YourPath>"
              )
            }

Thông tin chi tiết cho các tùy chọn này có thể được tìm thấy trong tài liệu của Microsoft.

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.