web-dev-qa-db-ja.com

dotnetビルド-エラー「デフォルトのページ '/index.html'を返すことができませんでした」が表示される

私のプロジェクトをexeファイルに生成しようとすると、エラーが発生します:

before: "dotnet build -r win10-x86" isok

生成されたexeを実行した後、すべて問題ありません:

indows DPAPI to encrypt keys at rest.
Hosting environment: Production
Content root path: C:....\currencyColution\correncyProject\bin\Debug\netcoreapp2.1\win10-x86
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.

ページを読み込んだ後、より正確にindex.htmlが見つかりません:

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HLG91TC2H0UO", Request id "0HLG91TC2H0UO:00000001": An 

unhandled exception was thrown by the application.
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.

Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.Extensions.DependencyInjection;
using Swashbuckle.AspNetCore.Swagger;
using System;
using System.IO;
using Microsoft.AspNetCore.Http;

namespace AspNetCore2Ang6Template
{
  public class Startup
  {

    public void ConfigureServices(IServiceCollection services)
    {
      services.AddMvc();
      services.AddSpaStaticFiles(c =>
      {
        c.RootPath = "wwwroot";
      });

    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      if (env.IsDevelopment())
      {
        app.UseDeveloperExceptionPage();
      }

      app.UseDefaultFiles();
      app.UseStaticFiles();
      app.UseSpaStaticFiles();
      app.UseMvc(routes =>
      {
        routes.MapRoute(name: "default", template: "{controller}/{action=index}/{id}");
      });

      app.UseSpa(spa =>
      {
        spa.Options.SourcePath = "wwwroot";
      });

    }
  }
}

angularと他のいくつかを使用していません。wwwroot/ index.htmlを開いてみてください。

ファイル:

currencyProject

wwwroot

Program.cs

Startup.cs

VSでテスト済み、すべて動作しますが、exeビルダー経由ではありません

dev:dotnet runのように起動すると、localhost:58893 /で動作しますが、prod dotnet build on localhost:5000の何が問題になっていますか

launchSettings:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:58842/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "AspNetCore2Ang6Template": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:58893/"
    }
  }
}
6
Max990

これは、gitブランチの切り替え後に発生しました。
ノードモジュールを再度インストールする必要がありました:

npm install    

これから answer GitHubで。このソリューションは、Node.jsをフロントエンドスタックの一部として使用している場合にのみ役立つことに注意してください。

0
ksyrium