如何让Visual Studio在Web请求触及自研C#代码或控制器时自动触发断点?
如何让Visual Studio在Web请求触及自研C#代码或控制器时自动触发断点?
嘿,这个需求我太懂了——每次调试Web项目,都要在微软的中间件里绕半天才能到自己的代码,确实烦!下面给你两个精准解决的方案,完全贴合你的需求:
方案1:精准命中自研控制器(推荐,更高效)
如果你的目标是只要请求到了自己写的控制器就触发断点,不用管具体是哪个控制器或方法,可以这么操作:
- 打开Visual Studio的断点窗口(快捷键Ctrl+Alt+B)
- 点击窗口左上角的「新建」按钮,选择「函数断点」
- 在弹出的对话框里,根据你的项目类型填写函数名:
- 如果你用的是ASP.NET Core:输入
Microsoft.AspNetCore.Mvc.ControllerBase.ExecuteAsync - 如果你用的是传统ASP.NET MVC:输入
System.Web.Mvc.Controller.ExecuteCore
- 如果你用的是ASP.NET Core:输入
- 接下来右键这个新建的断点,选择「条件」,输入一段判断逻辑,确保只有你自己的控制器才会触发:
比如你的项目命名空间是this.GetType().Namespace.StartsWith("你的项目命名空间前缀")MyCompany.ECommerce,就填this.GetType().Namespace.StartsWith("MyCompany.ECommerce") - 确认设置后,不管哪个自研控制器收到请求,调试器都会直接在控制器代码的入口处中断,完全跳过微软的中间件环节
方案2:覆盖所有自研C#代码(不限于控制器)
如果你想更宽泛一点,只要请求触及任何你团队写的C#代码就触发断点,可以用「Just My Code」+ 符号过滤的组合:
- 先启用「Just My Code」:依次点击「调试」→「选项」→「调试」→「常规」,勾选「启用Just My Code」
- 接着配置符号加载,避免调试器加载微软的符号:打开「调试」→「选项」→「调试」→「符号」,取消勾选「Microsoft符号服务器」,只保留你自己的程序集符号路径
- 最后,设置一个「全局函数断点」,输入通配符匹配你所有自研代码的命名空间:
比如你的项目命名空间前缀.*MyCompany.ECommerce.*,这样任何属于你项目命名空间下的代码被执行时,调试器都会自动中断
这样设置后,你就再也不用在微软的中间件代码里瞎找入口了,调试器会直接带你跳到自己的代码上!
内容来源于stack exchange
相关产品推荐
相关产品推荐

