【发布时间】:2016-02-09 00:49:05
【问题描述】:
今天早上我有一个奇怪的。我已经清理和重建了无数次,并关闭并重新打开了 VS 2015。我有纯红色断点并且代码执行,其他带有断点的控制器被击中?我不明白我在这里缺少什么。
通常我有一个包含三个项目的解决方案。
- 网页接口
- EF 回购
- MVC
MVC 项目中的断点被击中就好了。 API 控制器中的代码执行得很好,只是没有中断? Fiddler 报告 200,我可以重新发出命令并获得 200,但从未达到断点?
它是一个多部分 MIME,mvc 项目有它自己的端口 localhost:50009 而 api 是 localhost:50109 但我认为这不重要????
重要的路径是api/Upload/AttyUpload
[HttpPost]
[AllowAnonymous]
public async Task<HttpResponseMessage> AttyUpload()
{ ... }
<form action="http://localhost:50109/api/Upload/AttyUpload" method="post" enctype="multipart\form-data">....</form>
编辑
根据 Batuta 的评论,我设置了两个断点。 MVC startup.cs 中的第一个,api global.asax 中的第二个。
启动断点已命中,但 global.asax 未命中。好的,所以我正在运行 api 的编译版本,因此我的断点没有被命中?
【问题讨论】:
-
您能否尝试查看是否可以在 Startup.cs 文件中添加断点并查看它是否被命中,甚至在它命中您的 Web api 控制器之前?
-
我按照你的建议做了,结果表明我的 api 出了点问题......请参阅 OP 编辑。
-
如果我没记错的话,很多时候应用程序启动中的断点不会被命中,因为代码在 Visual Studio 甚至有机会附加调试器之前运行。
-
要在某些 global.asax.cs 方法中打断点,您需要在设置调试器后回收应用程序池。最简单的方法是重新保存 web.config 文件。也可以在 IIS 控制台中通过右键单击应用程序池来完成。之后,只需在浏览器中重新加载网站页面。
标签: c# asp.net-web-api