Http.sys 및 URLPrefix를 사용하는 동안 React SPA를 제공하도록 닷넷 코어 3을 구성하는 방법은 무엇입니까?


9

URLPrefix를 변경 한 후 다음 오류가 발생합니다.

SPA 기본 페이지 미들웨어가 기본 페이지 '/index.html'을 찾을 수 없어서 요청을 처리 한 다른 미들웨어가 없기 때문입니다.

따라서 닷넷 코어에 접두사를 알려주는 것이 필요하지만 올바른 설정 조합을 찾을 수없는 것 같습니다.

대단히 감사합니다.

코드는 다음과 같습니다.

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

서비스 구성 :

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.