提问人:rvnlord 提问时间:10/30/2014 最后编辑:rvnlord 更新时间:6/11/2015 访问量:753
ASP.NET 调试器在使用 https 时出现 http 错误
ASP.NET debugger gives errors with http, while working with https
问:
我真的迫切需要你的帮助,因为我的程序遇到了非常不寻常的问题:
当我尝试在本地 IIS Server 7.5 上调试我的 ASP.NET 或 MVC 应用程序时,我收到此错误: “无法在 Web 服务器上启动调试。由于语法无效,服务器无法处理调试请求。"
直到今天,我几乎尝试了我在谷歌上能找到的所有解决方案。我花了 12 个小时试图弄清楚这一点。没有运气。
错误仅发生在以下地址:http:// localhost/AspDemo 而不是以下地址:https:// localhost/AspDemo。基本上,如果我使用 https 而不是 http,我可以像往常一样进行调试。
https 在我的本地 IIS 服务器上被禁用:),我的意思是它被设置为忽略。
此外,我可以在IIS控制面板中使用两种协议打开我的站点
如果我在 Visual Studio ASP.NET 应用的属性中禁用调试器,则应用程序运行正常。
这是 httperr 日志中的错误:
2014-10-30 00:23:46 ::1%0 2977 ::1%0 80 - - - 400 - 动词 -
我不确定确切的位置,但在其他一些日志中,我看到了对以下内容的引用: 错误 400“错误请求 - 无效动词”
一周前,我遇到问题的所有应用程序都可以与 Visual Studio asp.net 调试器完美配合,我不知道发生了什么。
我怀疑有一些更新。因为最近更新也弄乱了我的自定义引导加载程序。
当我启用跟踪时 - 日志为空,http
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(不工作):: https://www.dropbox.com/s/7b26ybogtyqlico/LogFile%20HTTP%20NOT%20Working.CSV?dl=0
- HTTPS(工作):https://www.dropbox.com/s/ggsj57v97ky90e6/LogFile%20HTTPS%20Working.CSV?dl=0
我可能是错的,但我认为这里的关键是只有 HTTP 不起作用,只有 VS Debugger 不起作用,其他一切都很好(不调试的 HTTP 和 HTTPS 以及带调试的 HTTPS。
(IIS上的每个解决方案都会发生这种情况,新的解决方案也会受到影响,所有这些解决方案都在工作,而且其中一些甚至从它们开始工作时就没有改变,IIS配置也没有改变)
答:
我在这里的任何描述中都没有看到动词的名称,但我的猜测是 VS 调试器使用特殊动词 (DEBUG) 而不是标准的 GET、HEAD、POST 等。如果在 VS 之后重新安装 IIS,则 ISAPI 映射可能会被核弹。这可能会解决问题:
https://msdn.microsoft.com/en-us/library/ms165022%28v=vs.90%29.aspx
评论
C:\Users\<UserName>\AppData\...
<UserName>