【问题标题】:Blazor wasm not serving static files from wwwroot after deploying to IIS部署到 IIS 后,Blazor 没有从 wwwroot 提供静态文件
【发布时间】:2021-07-26 19:45:34
【问题描述】:

我正在开发一个.net 5.0 blazor wasm 应用程序。当我使用 IIS Express 运行应用程序表单 Visual Studio 并导航到 https://localhost:5001/docs/simple.pdf 时,该文件在浏览器中提供。

但是,在将 blazor wasm 应用程序部署到 IIS 后,同样的方法不起作用。我没有收到任何错误,而是加载了我的 Not Found Route 模板屏幕。

这是屏幕截图:

wwwroot 的 blazor wasm 应用程序:

IISExpress加载文档:

IIS virtual directory路径:

IIS没有加载文档并显示NotFound路由模板:

我还注意到wwwroot 中的所有文件都不能在IIS 的浏览器中直接访问。请协助解决我所缺少的内容。

【问题讨论】:

  • 配置 IIS 时,你真的选择了 44353 端口吗?检查 IIS 配置中的端口以确保。如果没有显式设置,默认为 80 端口
  • 我明确选择了 44353 端口。https 版本将在默认端口 80 上运行?
  • 好的,我也试过 44353,它工作正常。另一件要检查的事情:确保您的服务器项目中 Startup.cs 的 Configure() 方法中有 app.UseStaticFiles()。
  • 这是一个到 IIS 的 blazor wasm 独立部署。 app.UseStaticFiles() 此处不可用
  • 你检查过控制台是否有相关的错误信息吗?我没有在您发布的图片中找到 NotFound 错误消息。或者您可以尝试使用失败的请求跟踪来获取详细的错误消息。

标签: asp.net-core iis blazor blazor-webassembly asp.net5


【解决方案1】:

Blazor WebAssembly 不参与提供文件。

这是在 IIS 中配置的东西。

【讨论】:

  • 那么如何配置 IIS 呢?
  • 请您帮忙看看需要在 IIS 中进行哪些配置?
  • 你在哪里运行 Blazor WASM SPA - 你是如何运行 localhost:44353 的?
  • 我将我的 blazor wasm 发布到映射到 localhost:44353 的 IIS 虚拟目录并从浏览器访问它
  • 我倾向于同意这个答案。我刚刚在我的 IIS 上发布了一个小型 Blazor WASM,我可以轻松导航到 wwwroot 内的资源。所以我认为 OP 问题与 Blazor 无关。
【解决方案2】:

我能够重现您的问题。以下是我认为您可以解决的方法。

导航到解决方案中的服务器项目。

打开文件 Startup.cs。导航到 Configure 方法并添加这行代码:

    app.UseStaticFiles();

发布您的项目并重新复制到 IIS。

在默认的 Visual Studio 模板中,此代码将存在。但根据您创建解决方案的方式,您可能错过了它。

【讨论】:

  • app.UseStaticFiles() 将在 blazor wasm 项目模板中可用?
  • 如果它是一个 ASP.NET 托管应用程序,那么将有一个客户端和服务器端项目。我误解了那只是客户端项目。
【解决方案3】:

这似乎是service-worker.published.js 文件附带blazor wasm pwa 模板的问题。这已在dotnet/aspnetcore repo 中报告。

请关注 github 中的issue 以获取更多更新。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2020-08-29
    • 2017-05-18
    • 2020-10-03
    相关资源
    最近更新 更多