ASP.NET 调试器在使用 https 时出现 http 错误

ASP.NET debugger gives errors with http, while working with https

提问人:rvnlord 提问时间:10/30/2014 最后编辑:rvnlord 更新时间:6/11/2015 访问量:753

问:

我真的迫切需要你的帮助,因为我的程序遇到了非常不寻常的问题:

  1. 当我尝试在本地 IIS Server 7.5 上调试我的 ASP.NET 或 MVC 应用程序时,我收到此错误: “无法在 Web 服务器上启动调试。由于语法无效,服务器无法处理调试请求。"

    enter image description here

  2. 直到今天,我几乎尝试了我在谷歌上能找到的所有解决方案。我花了 12 个小时试图弄清楚这一点。没有运气。

  3. 错误仅发生在以下地址:http:// localhost/AspDemo 而不是以下地址:https:// localhost/AspDemo。基本上,如果我使用 https 而不是 http,我可以像往常一样进行调试。

  4. https 在我的本地 IIS 服务器上被禁用:),我的意思是它被设置为忽略。

  5. 此外,我可以在IIS控制面板中使用两种协议打开我的站点

  6. 如果我在 Visual Studio ASP.NET 应用的属性中禁用调试器,则应用程序运行正常。

  7. 这是 httperr 日志中的错误:

    2014-10-30 00:23:46 ::1%0 2977 ::1%0 80 - - - 400 - 动词 -

  8. 我不确定确切的位置,但在其他一些日志中,我看到了对以下内容的引用: 错误 400“错误请求 - 无效动词”

  9. 一周前,我遇到问题的所有应用程序都可以与 Visual Studio asp.net 调试器完美配合,我不知道发生了什么。

  10. 我怀疑有一些更新。因为最近更新也弄乱了我的自定义引导加载程序。

  11. 当我启用跟踪时 - 日志为空,http

  12. Fiddler 日志也是空的,也许我可以在 Fiddler 中使用一些配置来生成更多日志?(当我使用https时,它当然会使用修改后的machine.config进行记录)

将永远感谢您的帮助,如果您需要更多的日志,请不要犹豫。

我还想提一下,是的,我在这个网站上看到了类似的帖子,但没有一个描述了与我类似的问题。

/编辑

从我能够观察到的情况来看,错误发生在调试器访问 machine.config 文件之前,你们能告诉我如何在那一刻捕获错误吗?

==== /编辑 2 ====

任何人?没有人知道答案? 最近我能够在以下位置找到完整的错误消息:C:\Users\\AppData\Local\Temp\Visual Studio Web Debugger.log

http://localhost/MVCDemo/debugattach.aspx

Status code=400 (Bad Request)
Protocol version=1.1
Cached=False
Connection=close
Content-Length=326
Content-Type=text/html; charset=us-ascii
Date=Fri, 31 Oct 2014 03:44:14 GMT
Server=Microsoft-HTTPAPI/2.0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Verb</h2>
<hr><p>HTTP Error 400. The request verb is invalid.</p>
</BODY></HTML>

在过程监视器中,我也发现了这个:

<event>
<ProcessIndex>1339</ProcessIndex>
<Time_of_Day>04:40:33,3661553</Time_of_Day>
<Process_Name>devenv.exe</Process_Name>
<PID>10768</PID>
<Operation>CreateFile</Operation>
<Path>C:\Users\<UserName>\AppData\Roaming\Microsoft\VisualStudio\12.0\Debugger\StepIntoFilterData.ini</Path>
<Result>PATH NOT FOUND</Result>
<Detail>Desired Access: Read Data/List Directory, Read Attributes, Synchronize, Disposition: Open, Options: Sequential Access, Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a</Detail>
</event>

我真的非常非常需要这方面的帮助。

=== /编辑 3 ===

第二个错误不相关,我刚刚检查过,它也存在于 https (C:\Users\\AppData\Roaming\Microsoft\VisualStudio\12.0\Debugger\StepIntoFilterData.in),并且调试为 https localhost 工作得很好。

=== /编辑 4 ===

下面是在 Visual Studio 调试 HTTP(不工作)和 HTTPS(工作)期间捕获的进程监视器日志

(在随机 MVC 教程上执行的测试)

使用 CTRL+F 并在日志中查找“Visual Studio Web Debugger.log”,以便在发生时了解情况。在 https 日志中是好的,在 http 日志中返回前面提到的 Invalid Verb 错误。

我可能是错的,但我认为这里的关键是只有 HTTP 不起作用,只有 VS Debugger 不起作用,其他一切都很好(不调试的 HTTP 和 HTTPS 以及带调试的 HTTPS。

(IIS上的每个解决方案都会发生这种情况,新的解决方案也会受到影响,所有这些解决方案都在工作,而且其中一些甚至从它们开始工作时就没有改变,IIS配置也没有改变)

asp.net 调试 语法错误

评论

0赞 trnelson 10/31/2014
尝试以管理员身份运行 Visual Studio。
0赞 rvnlord 10/31/2014
感谢您的回复,我总是以管理员身份运行,我甚至尝试以系统身份运行,您是否阅读了我提到的错误,它们是否给了你们任何线索?
0赞 trnelson 10/31/2014
我很好奇这是从哪里来的:如果该值是从应该是 XML 的东西中读取的,那肯定是无效的语法。你能做一个完整的项目文本搜索,看看这是否在任何文件中产生任何结果吗?特别是在解决方案、项目、配置文件中。C:\Users\<UserName>\AppData\...<UserName>
0赞 rvnlord 10/31/2014
我通过Process Monitor进行了检查,当我使用https而不是http时,相同的文件被报告为丢失,但一切正常,所以情况并非如此,因为我认为我将很快发布整个报告。我想再次提到,使用“浏览”选项从IIS服务器手动启动应用程序时,这两种协议都有效。
0赞 Michael Liu 11/1/2014
您是否以管理员身份运行 Fiddler?

答:

0赞 Wonko 6/11/2015 #1

我在这里的任何描述中都没有看到动词的名称,但我的猜测是 VS 调试器使用特殊动词 (DEBUG) 而不是标准的 GET、HEAD、POST 等。如果在 VS 之后重新安装 IIS,则 ISAPI 映射可能会被核弹。这可能会解决问题:

https://msdn.microsoft.com/en-us/library/ms165022%28v=vs.90%29.aspx