You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7部署至Azure后_LogonPartial无法正常渲染求助

部署到Azure后ASP.NET Core 7的_LoginPartial视图未渲染问题解决建议

问题描述

我用Visual Studio 2022创建了ASP.NET Core 7应用,本地运行时_LogonPartial.cshtml能正常渲染登录/登出模块,但部署到Azure后,页面仅显示<partial name="_LoginPartial" />标签,未渲染实际内容。已尝试重建项目、重新部署,问题依旧。对比同类型正常部署的新项目,怀疑代码存在问题但无法定位,求解决建议。

本地运行时的页面头部代码

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" href="/">BWDWeb</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" href="/">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" href="/Users/Pictures">Pics</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" href="/Privacy">Privacy</a>
                    </li>
                </ul>
                
<ul class="navbar-nav">
    <li class="nav-item">
        <a class="nav-link text-dark" title="Manage" href="/Identity/Account/Manage">Hello wallace.b.mcclure@gmail.com!</a>
    </li>
    <li class="nav-item">
        <form class="form-inline" method="post" action="/Identity/Account/Logout">
            <button  type="submit" class="nav-link btn btn-link text-dark">Logout</button>
        <input name="__RequestVerificationToken" type="hidden" value="CfDJ8GZuOj8G4EJKpkUu0YwgwQUebAMzZHDWLJlpWl8yStyoJraAREx1GrNPYY-OwqrmMSnrko3UQ-8LV4XSBT4TFtwdJnNSfUl1vLWrh6CpIC9kyMbzvpUDVoOJDOQk5Tr7GmF3wdADP5Lo3OOmEsxcRl9Vl5u3bGFAUh52JGx2mgRVH9sFp3pcKSSmbaupMkq3wA" /></form>
    </li>
</ul>

            </div>
        </div>
    </nav>
</header>

Azure部署后的页面头部代码

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">BWDWeb</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Users/Pictures">Pics</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
                <partial name="_LoginPartial" />
            </div>
        </div>
    </nav>
</header>

_LogonPartial.cshtml内容

@using Microsoft.AspNetCore.Identity
@using BWDWeb.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

<ul class="navbar-nav">
@if (SignInManager.IsSignedIn(User))
{
    <li class="nav-item">
        <a  class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @User.Identity?.Name!</a>
    </li>
    <li class="nav-item">
        <form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/", new { area = "" })" method="post" >
            <button  type="submit" class="nav-link btn btn-link text-dark">Logout</button>
        </form>
    </li>
}
else
{
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Register</a>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>
    </li>
}
</ul>

可能的解决方向

  • 文件名拼写错误:本地部分视图文件名为_LogonPartial.cshtml,但页面中引用的是_LoginPartial(注意Logon和Login的差异)。本地系统可能不区分大小写导致加载成功,但Azure部署环境(尤其是Linux容器)严格区分大小写,会因找不到文件直接输出标签。修正引用名称为_LogonPartial即可。
  • 检查视图文件位置:确保_LogonPartial.cshtml放在正确的共享目录下,Razor Pages项目需放在Pages/Shared,MVC项目需放在Views/Shared。若位置特殊,需指定完整路径,比如<partial name="~/Pages/Shared/_LogonPartial.cshtml" />。
  • 确认部署文件完整性:通过Azure App Service的Kudu工具(高级工具>Go)查看site/wwwroot目录,确认_LogonPartial.cshtml已被正确部署,避免部署时遗漏文件。
  • 禁用视图编译排查:在项目文件中添加<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>,禁用发布时视图编译,重新部署后查看是否能正常渲染。若恢复正常,说明原部署过程中视图编译出错,可查看日志定位具体编译问题。
  • 查看Azure日志:在Azure App Service的“日志流”中查看是否有视图加载失败的错误信息,这类日志会直接提示找不到视图文件或编译错误,帮助快速定位问题。

内容的提问来源于stack exchange,提问作者Wallace B. McClure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:35:24