ASP.NET Core 6 MVC点击链接时IActionResult被多次调用的问题
点击锚点后ASP.NET Core 6 MVC控制器Add方法触发两次的原因分析
在ASP.NET Core 6 MVC项目中,点击如下锚点标签后,控制器的Add方法断点连续触发两次:
锚点标签代码
<a asp-area="" asp-controller="Trip" asp-action="Add" asp-route-id="Page1" style="text-decoration:none; font-weight:bold;">Add Trip</a>
控制器代码
public IActionResult Add(string id = "Page1") { return View(id); }
视图代码
@{ ViewData["Title"] = "Add Trip - Page 1"; } <h1>Page 1</h1>
以下是几种常见的触发第二次请求的原因:
浏览器自动请求
favicon.ico匹配路由:
多数浏览器会自动请求网站图标favicon.ico,若项目中未放置该文件,且默认路由模板({controller=Home}/{action=Index}/{id?})将此请求解析为Trip/Add调用(favicon.ico被当作id参数),就会触发第二次方法调用。可通过浏览器网络面板查看请求URL,或在控制器中输出id参数值验证。布局页引用不存在的资源:
若项目的布局页(_Layout.cshtml)中引用了不存在的CSS、JS或图片资源,浏览器会对这些资源发起请求。如果资源路径恰好匹配Trip/Add的路由规则,就会触发第二次调用。检查布局页的资源引用,或查看网络面板的请求记录即可确认。路由配置冲突:
自定义路由规则可能导致请求被重复匹配,或特殊路由模板误将后续请求导向Trip/Add方法。检查Program.cs中的路由配置,确认是否存在可能引发重复匹配的规则。浏览器自动重试:
极少数情况下,第一次请求响应异常(如超时、不完整)会触发浏览器自动重试,导致方法被调用两次。可通过网络面板查看请求状态码和响应内容确认。
内容的提问来源于stack exchange,提问作者Affan Sheikh
相关产品推荐
相关产品推荐

