无法调试 Razor 页面中的 OnGet() 方法 - ASP.NET Core

问题描述 投票:0回答:1

我遇到一个问题,当我尝试调试 Razor 页面应用程序中的

OnGet()
方法时,该方法未被调用。因此,某些属性(如名称)的值在调试期间不会按预期更新。这是我的设置的细分:

问题描述

我有一个 Razor 页面 (

TestModel.cshtml.cs
),其中有一个
OnGet()
方法,我可以在其中更新 Name 属性。但是,当我设置断点并调试应用程序时,未调用
OnGet()
方法,因此,Name 的值未更新。

这是我的代码的简化版本:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace WebApplication1.Pages
{
    public class TestModel : PageModel
    {
        public string Name { get; set; }
        public string Description { get; set; }

        public void OnGet()
        {
            Name = "Test";
            Description = "This is a test name.";
        }
    }
}

这是我的 Razor 页面 (

Test.cshtml
):

@page
@model WebApplication1.Pages.TestModel

<h1>Hello, @Model.Name!</h1>
<p>@Model.Description</p>`

问题是,当我在

OnGet()
方法中设置断点并尝试调试应用程序时,永远不会命中断点,因此,
Name
的值不会更新。但是,在正常执行期间,该值会正确更新。

我已经尝试过使用

[BindProperties]
属性,但它仅在正常执行期间有效,在调试期间无效。

以下是我排除故障所采取的一些步骤:

  • 检查了 Startup.cs 中的路由配置,以确保其将请求正确映射到我的 Razor 页面。
  • 确保没有构建错误并且项目构建成功。
  • 检查异常并确保在执行 OnGet() 方法之前没有发生未处理的异常。
  • 在 OnGet() 方法中设置断点,以确保它不会因某种原因被跳过。
  • 清除缓存/cookie并尝试在不同浏览器中调试。

尽管做出了这些努力,我仍然无法调试

OnGet()
方法。

asp.net-core debugging asp.net-core-mvc razor-pages visual-studio-2022
1个回答
0
投票

我遇到了 Razor 页面中的 OnGet() 方法的问题 当我尝试调试应用程序时,它没有被调用。最后, 某些属性的值(例如名称)不会更新为 调试期间预期。

根据您的场景和描述,看来您遵循的调试方法是正确的。我已尝试调查你的问题。根据我的测试结果,我认为这不是因为您的代码,而是因为您的 Visual Studio 配置导致了该问题。可能有些配置不正确。

我建议您仔细检查 Visual Studio 中的调试设置。确保选择要调试的项目并将启动操作设置为“IIS Express”或您首选的 Web 服务器。另外,请在你的Visual Studio中检查此配置,

Suppress JIT optimization on module load
应取消选中。

当我测试时,我已经成功地启动了调试器并得到了预期的结果。

这是我所做的详细步骤:

我创建了剃刀页面项目,如下所示:

  1. 项目结构:

  1. launchSettings.json:

  1. 程序.cs

输出:

注意:参阅此官方文档,以获得更多帮助。

© www.soinside.com 2019 - 2024. All rights reserved.