วิธีการกำหนดค่า dotnet core 3 เพื่อรองรับ React SPA ในขณะที่ใช้ Http.sys และ URLPrefix


9

หลังจากเปลี่ยน URLPrefix ฉันได้รับข้อผิดพลาดต่อไปนี้:

มิดเดิลแวร์หน้าเริ่มต้นของ SPA ไม่สามารถส่งคืนหน้าเริ่มต้น '/index.html' ได้เนื่องจากไม่พบและไม่มีมิดเดิลแวร์อื่นจัดการคำขอ

บางสิ่งจำเป็นต้องบอกจุดหลักของ dotnet เกี่ยวกับคำนำหน้า แต่ฉันไม่สามารถหาชุดค่าผสมที่เหมาะสมได้

ช่วยชื่นชมมาก

รหัสด้านล่าง:

HostBuilder ถูกตั้งค่าด้วย:

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>();
    });

ConfigureServices:

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" });
  });
}

จากนั้นกำหนดค่าคือ:

      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";


      });

คำตอบ:


3

นี่เป็นปัญหาที่พา ธ ไปยังไฟล์สแตติกจริงหายไป ใน StaticFilesOptions ของคุณตรวจสอบให้แน่ใจว่าคุณได้จัดเตรียมพา ธ ไปยัง index.html ไฟล์สแตติกของคุณ

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

รายละเอียดเพิ่มเติมสำหรับตัวเลือกเหล่านี้อยู่ในเอกสารของ Microsoft

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.