为什么 Razor 页面 (OnX) 处理程序在 debug/visual studio 中被调用两次?

Why does Razor page (OnX) handler get invoked twice in debug/visual studio?

我正在编写一个 razor 站点,在尝试调试其他内容时,我注意到我项目中任何页面的页面处理程序似乎都被调用了两次。在已发布的生产版本中不会发生。

例如:

项目模型中的任何页面和任何处理程序类型 (get/post):

    public void OnGet()
    {
        _logger.LogTrace("Main index page get");
    }

日志记录:

2019-03-11 10:11:55.9120||TRACE|*****.Pages.IndexModel|Main index page get |url: https://localhost/|action: 
2019-03-11 10:11:56.7514||TRACE|*****.Pages.IndexModel|Main index page get |url: https://localhost/|action: 

并且有一个断点,它两次命中断点,浏览器开发工具网络日志显示一个请求。所有浏览器都会引发相同的行为。

我一辈子都弄不明白为什么训练员会被打两次!不用说,这会使调试新功能变得复杂。

有什么想法吗?

PS:我在我的开发工作站上重新启动了 VS,然后重新启动它,四处搜索以防有多个进程在监听我能想到的任何其他模糊相关的内容 - 没有结果。

这不是任何框架的问题。我的自定义中间件无法在特定条件下中止处理管道。如果我们在开发环境中(因为它很烦人),我编辑了中间件以中止它的处理,但我失败了。

基本上我说的是:

public async Task InvokeAsync(...)
{
    if (env.IsDevelopment())
    {
         // Do stuff to make the rest of the work of this MW irrelevant
         await _next(context);
    }

    // Rest of middleware including another await _next(context)
}

显然,这是一个愚蠢的错误。 me/all 的教训:确保您的中间件坚如磐石。