【问题标题】:ASP.NET debugger gives errors with http, while working with httpsASP.NET 调试器在使用 https 时出现 http 错误
【发布时间】:2014-12-25 22:15:27
【问题描述】:

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

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

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

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

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

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

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

  7. 这是来自 httperr 日志的错误:

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

  8. 我不确定具体在哪里,但在其他一些日志中我看到了类似这样的引用:Error 400 "Bad Request - Invalid Verb"

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

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

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

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

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

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

/编辑

据我观察,错误发生在调试器访问 machine.config 文件之前,你们能告诉我如何在那一刻捕捉错误吗?

==== /edit 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>

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

=== /edit 3 ===

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

=== /edit 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 配置也没有改变)

【问题讨论】:

  • 尝试以管理员身份运行 Visual Studio。
  • 感谢您的回复,我始终以管理员身份运行,我什至尝试以系统身份运行,您是否阅读了我提到的错误,它们是否给您任何线索?
  • 我很好奇这是从哪里来的:C:\Users\&lt;UserName&gt;\AppData\... 如果从某个应该是 XML 的东西中读取该值,那肯定是无效的语法。您能否对&lt;UserName&gt; 进行完整的项目文本搜索,看看是否会在任何文件中产生任何结果?特别是在解决方案、项目、配置文件中。
  • 我通过进程监视器进行了检查,当我使用 https 而不是 http 时,同一个文件被报告为丢失,但一切正常,所以情况并非如我想的那样尽快发布整个报告。我想再次提一下,当使用浏览选项从 IIS 服务器手动启动应用程序时,这两种协议都有效。
  • 您是否以管理员身份运行 Fiddler?

标签: asp.net debugging syntax-error


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2011-06-05
    • 2021-05-10
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多