我正在编写一个剃刀网站,同时尝试调试其他内容时,我注意到项目中任何页面的页面处理程序似乎都被调用了两次。在发布的生产版本中不会发生。
例如:
项目模型中的任何页面,以及任何处理程序类型(获取/发布):
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,然后重新启动它,进行搜索,以防万一有多个进程在听其他我可能想到的与之相关的东西-没有结果。
答案 0 :(得分:0)
这不是任何框架的问题。我的自定义中间件无法在特定条件下中止对管道的处理。如果我们在开发环境中,我编辑了中间件以中止其处理(因为这很烦人),但是我失败了。
基本上我说:
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)
}
很显然,这是一个愚蠢的错误。对我/所有人来说,教训:确保您的中间件坚如磐石。