首页 > 解决方案 > 默认 Blazor PWA 项目无法托管到 IIS

问题描述

我使用 Visual Studio 2019 创建了一个新的 Blazor 项目(看图片)

我检查了 https、ASP.NET Core 托管和渐进式 Web 应用程序

默认 blazor webassembly 应用程序项目

之后,Visual Studio 创建客户端项目、服务器项目和共享类项目。我确保项目没有错误,所以我编译它并在 Visual Studio 上运行它。

之后我想将它托管到我的 IIS 中,所以我进入服务器项目,右键单击,发布并将所有内容发布到我的发布文件夹中。

一切顺利,现在我进入我的 IIS,添加新站点,并选择之前生成的发布文件夹的路径(我使用端口 80 进行此测试)。

我还向 Web 配置授予 IIS_IUSRS 权限。

现在我在浏览器中输入 localhost:80 并进入等待加载页面的无限循环,但它永远不会加载。

浏览器中不会显示任何错误。

所以我进入我的 IIS 管理器并说 Visual Studio 默认生成的 Web 配置被视为错误。

我的 webconfig.xml :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Funzia.Server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 4872489F-5CAD-4DF4-BAFC-9D401F53BF48-->

我还安装了 ASP.NET 核心运行时捆绑包 dotnet-hosting-2.2.2。

事实上,我可以轻松地托管服务器应用程序 blazor,零问题,但是当我尝试发布 Blazor WebAssembly 应用程序时它不起作用。

其他有用信息:

模块没有丢失。

在此处输入图像描述

dotnet --info 的输出:

.NET Core SDK (che rispecchia un qualsiasi file global.json):
 Version:   3.1.301
 Commit:    7feb845744

Ambiente di runtime:
 OS Name:     Windows
 OS Version:  10.0.18363
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.301\

Host (useful for support):
  Version: 3.1.5
  Commit:  65cd789777

.NET Core SDKs installed:
  3.1.300 [C:\Program Files\dotnet\sdk]
  3.1.301 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

我还尝试添加自动签名证书并尝试通过 https 访问,但我遇到了与使用 http 相同的结果。

更进一步,我还尝试通过控制台发布项目,我认为也许 Visual Studio 可以创建损坏的 Web 配置文件,但创建的文件是相同的。

我发现其他一些用户也遇到了这个问题,但我还没有找到任何解决方案。

有什么建议么?

标签: c#asp.net.netiisblazor

解决方案


您可以尝试以下步骤在 iis 上发布 Blazor WebAssembly 应用程序。我测试它可以在我的电脑上正常工作。

要在 iis 中发布 blazor 应用程序,请首先确保您安装了以下 iis 功能。 在此处输入图像描述

  • .NET Core 托管包
  • ASP.NET Core 运行时

根据您的版本下载并安装运行时和托管包。安装托管包后不要忘记重新启动机器。

现在看一下位于屏幕左侧的解决方案资源管理器选项卡。右键单击解决方案的服务器项目,即 BlazorDDL.Server。点击发布。 在此处输入图像描述

您将看到一个新屏幕。在左侧菜单中,单击文件夹。选择要将 Blazor 应用程序发布到的文件夹。单击“发布”。如果没有错误,您的应用程序将成功发布。

在此处输入图像描述

接下来,您必须配置 IIS。 在此处输入图像描述

你必须配置应用程序池。您会在左侧面板中找到它。双击池ankisite。将出现编辑应用程序池窗口。从 .NET CLR 版本下拉列表中,选择无托管代码选项。 在此处输入图像描述


推荐阅读