当 运行 通过 Visual Studio 代码时,某些文件未提供

Some file not served when run via Visual Studio Code

我有一个由 Yeoman 生成的 'Hello World' Kestrel 服务器(如 described here)。

yo aspnet

当我通过命令行 运行 站点时,一切正常:

dotnet run

如果它是 运行 到 Visual Studio 代码虽然 bootstrap.cssjquery.jsbootstrap.js 不加载 (404)。

看看F12的工具,其实是来自不同的地方。当 运行 通过 dotnet run 它们来自 https://ajax.aspnetcdn.com/...,但是当 运行 通过 Visual Studio 代码时,浏览器正在本地文件夹 ~/lib/... 中寻找它们.

一个。为什么文件的来源因我 运行 站点的不同而不同? b.我该如何解决这个问题?

谢谢

当你从命令行运行它时,它运行处于生产模式(没有ASPNETCORE_ENVIRONMENT变量集。当你运行它来自Visual Studio 它将 ASPNETCORE_ENVIRONMENT 设置为 Development

在你的 Razor 文件中,你有一个 <environments> 部分来控制在哪种生产模式下提供哪些文件。根据您的 environment/OS,您需要以不同方式设置变量。也就是说,在 Linux 中,您需要 运行 ASPNETCORE_ENVIRONMENT=Development dotnet run

至于在开发模式下 运行 时出现 404 的原因,您可能需要将 wwwroot 文件夹复制到输出目录,并在 project.json.

"buildOptions": {
  "emitEntryPoint": true,
  "preserveCompilationContext": true,
  "copyToOutput": 
  [
    "wwwroot",
    "Views",
    "appsettings.json",
    "web.config"
  ]
},
"publishOptions": {
  "include": [
    "wwwroot",
    "Views",
    "appsettings.json",
    "web.config"
  ]
},

虽然通常需要将wwwroot添加到copyToOutput