Azure 应用服务中的 .NET5 Blazor 服务器应用返回“您无权查看此目录或页面”

Posted

技术标签:

【中文标题】Azure 应用服务中的 .NET5 Blazor 服务器应用返回“您无权查看此目录或页面”【英文标题】:.NET5 Blazor Server app in Azure App Services returns "You do not have permission to view this directory or page" 【发布时间】:2021-06-11 20:00:11 【问题描述】:

我正在尝试通过 Azure DevOps 将使用 .NET5 的 Blazor Server 应用部署到 Azure 应用服务。

Blazor 应用程序在本地运行并正常工作。 Azure DevOps 管道似乎也在正确构建和部署。如果我在 Azure 门户中使用控制台,我可以看到我期望的文件位于 wwwroot 文件夹中(我猜这是正确的?)。在“配置”>“常规设置”中,我可以看到已为 .NET 5 正确配置了应用服务。在网络端,目前没有访问限制。我现在还关闭了应用中的所有身份验证,以确保不会产生影响。

当我尝试访问https://my-app.azurewebsites.net 的站点时(不是真正的 url,只是一个相关的示例),我得到一个带有以下文本的白页:“您无权查看此目录或页面."。当我从 Kudu 页面查看诊断转储时,我可以看到更详细的错误页面,其中显示 403.14 - Forbidden 和消息“Web 服务器配置为不列出此目录的内容。”。如果我在 App Insights 中查看我尝试访问它的时间,我也可以看到带有 403 响应的请求(出于某种原因,使用 url:http://localhost/)。不幸的是,这个错误似乎涵盖了许多错误,因此虽然我发现了各种具有类似问题的来源,但到目前为止我发现的解决方案都没有产生任何积极影响。

编辑:所以我做了更多的挖掘,我认为有些文件可能会丢失。我尝试创建一个新的 Blazor Server 应用程序并通过 Visual Studio 手动发布它。这行得通,我从我的应用程序中发现的唯一区别是我没有 web.config、hostingstart.html 或静态 css/js 等(来自 wwwroot)。当我为我的应用程序或我创建的测试应用程序构建时,这些文件都不在输出目录中,因此看起来它们必须由 VS 手动发布过程中的某些内容单独添加,并且 Azure DevOps 发布步骤没有这样做.仍然不确定解决此问题的正确方法是什么(甚至完全确定这些东西是否相关)。

有没有人知道我可能会错过什么?

【问题讨论】:

docs.microsoft.com/en-us/aspnet/core/host-and-deploy/… 据我所知,这条路径是正确的。肯定是代码所在的位置 张贴截图让其他人了解问题 Follow my steps to troubleshoot,日志文件会告诉你更多。 【参考方案1】:

所以在弄清楚这里发生了什么之后,我打算删除它,但我想可能其他人会犯我犯的同样错误,这可能会有所帮助。基本上,我复制了 Azure 函数应用程序的另一个部署管道,作为部署管道的基础,我刚刚做了一个dotnet build,这就足够了。然而,对于这种应用程序来说,您需要运行 dotnet publish 才能获得有益的输出。

【讨论】:

是的,对于 Blazor 应用程序,您需要执行 dotnet publish 才能在 wwwroot 中嵌入 /_framework//_content/

以上是关于Azure 应用服务中的 .NET5 Blazor 服务器应用返回“您无权查看此目录或页面”的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Azure 发布的 Blazor 应用程序上的 XMLHttpRequest 错误

Blazor 项目在本地构建,但不在 azure 管道中

使用身份验证托管的 Blazor Wasm 上出现 Azure 500 错误

Microsoft Graph API - Blazor Server App .NET 5.0 使用 Azure 身份验证,MsalUiRequiredException 因用户质询而引发

使用 .NET 5.0 的 Blazor WebAssembly 应用程序 - Google 搜索 - 正在加载...发生未处理的错误。重新加载

使用 C#(无 JavaScript)直接将 Blazor WebAssembly 文件分块到 Azure Blob 存储