欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ASP.Net Core MVC 发生二次请求

程序员文章站 2022-04-02 17:46:42
...

Bug回忆录

  昨天搭建新框架的时候,遇到一个很奇怪的“Bug”,每次请求都会触发两次Aciton,举例子吧,Demo:

ASP.Net Core MVC 发生二次请求

_Layout.cshtml

ASP.Net Core MVC 发生二次请求

HomeController

ASP.Net Core MVC 发生二次请求


Index.cshtml

<h1>Hi, I'm index page.</h1>

最简单不过的代码,然后启动项目,无意中就发现了,过程中发生了两次请求:

ASP.Net Core MVC 发生二次请求

再新增一个控制器测试仍然是如此。

Debug

试想第二次请求发生了什么?加入一个请求统计的接口,拦截第二次请求。开撸:

ASP.Net Core MVC 发生二次请求

ASP.Net Core MVC 发生二次请求


当第二次请求时候,重定向到百度网。

然后在Startup中注册为单例

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton
<IRequestStat, RequestStat>();
}

启动!

ASP.Net Core MVC 发生二次请求

发现它并没有跳转到百度网,但是也发现了"Bug"所在,favicon.ico是来自百度的。

ASP.Net Core MVC 发生二次请求

第二次请求,其实浏览器是请求favicon.ico的tab图标文件。

如果页面没有提供favicon.ico时会从请求里尝试获取,但在生产过程中,Action是带有业务逻辑,我们肯定是不希望莫名其妙的被触发一次。

 解决

在_Layout.cshtml中把favicon.ico加上即可

ASP.Net Core MVC 发生二次请求

真是一不小心就掉坑了,记录一下爬坑日志,一步一个 脚印 坑。

原文地址:https://www.cnblogs.com/EminemJK/p/10442126.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
ASP.Net Core MVC 发生二次请求