Dotnet core 3, Http.sys ve bir URLPrefix kullanırken React SPA'yı sunacak şekilde nasıl yapılandırılır?


9

URLPrefix'i değiştirdikten sonra aşağıdaki hatayı alıyorum:

SPA varsayılan sayfa ara katmanı bulunamadığı için varsayılan '/index.html' sayfasını döndüremedi ve başka hiçbir ara katman isteği işleme koymadı.

Bu nedenle dotnet çekirdeğine önek hakkında bilgi vermek için bir şey gerekiyor, ancak ayarların doğru kombinasyonunu bulamıyorum.

Çok takdir Yardım.

Kod aşağıdadır:

HostBuilder şunlarla kurulur:

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

Ve sonra Yapılandır:

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


      });

Yanıtlar:


3

Bu, gerçek statik dosyalara giden yolun kaybolduğu bir sorun gibi görünüyor. StaticFilesOptions öğenizde, index.html statik dosyalarınızın yolunu içeren bir Dosya sağlayıcısı sağladığınızdan emin olun.

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

Bu seçeneklerle ilgili daha fazla ayrıntı Microsoft'un belgelerinde bulunabilir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.