ASP.NET调试器在使用https时提供http错误

ASP.NET调试器在使用https时提供http错误,asp.net,debugging,syntax-error,Asp.net,Debugging,Syntax Error,我真的非常需要你的帮助,因为我的程序遇到了非常不寻常的问题: 在本地IIS服务器7.5上调试ASP.NET或MVC应用程序时,我收到此错误: “无法在web服务器上启动调试。由于语法无效,服务器无法处理调试请求。” 直到今天,我在谷歌上找到了各种各样的解决方案。我花了12个小时试图弄明白这一点。没有运气 错误仅发生在以下地址:http://localhost/AspDemo上,而不发生在以下地址:https://localhost/AspDemo上。基本上,如果我使用https而不是http,

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

  • 在本地IIS服务器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%02977::1%080----400-动词-

  • 我不确定确切的位置,但在其他一些日志中,我看到类似这样的引用:错误400“错误请求-无效动词”

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

  • 我怀疑有更新。因为最近的更新也使我的自定义引导程序变得混乱

  • 当我启用跟踪时,http的日志为空

  • Fiddler日志也是空的,也许我可以在Fiddler中使用一些配置来生成更多的日志?(当我使用https时,它当然会使用modified 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>
    
    http://localhost/MVCDemo/debugattach.aspx
    状态代码=400(错误请求)
    协议版本=1.1
    Cached=False
    连接=关闭
    内容长度=326
    内容类型=文本/html;字符集=美国ascii码
    日期=2014年10月31日星期五03:44:14 GMT
    服务器=Microsoft HTTPAPI/2.0
    错误的请求
    错误的请求-无效的动词
    HTTP错误400。请求谓词无效

    在进程监视器中,我也找到了这个:

    <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>
    
    
    1339
    04:40:33,3661553
    devenv.exe
    10768
    创建文件
    C:\Users\\AppData\Roaming\Microsoft\VisualStudio\12.0\Debugger\StepIntoFilterData.ini
    找不到路径
    所需访问:读取数据/列表目录、读取属性、同步、处置:打开、选项:顺序访问、同步IO非警报、非目录文件、属性:n/a、共享模式:读取、删除、分配大小:n/a
    
    我真的,真的需要帮助

    ===/edit 3===

    第二个错误与此无关,我只是检查了一下,它也存在于https中(C:\Users\\AppData\Roaming\Microsoft\VisualStudio\12.0\Debugger\StepinotofilterData.in),并且作为https localhost进行调试可以完美地工作

    ===/edit 4===

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

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

    使用CTRL+F并在日志中查找“VisualStudioWebDebugger.log”,以了解何时发生。在https日志中是好的,在http日志中返回前面提到的无效动词错误

    • HTTP(不工作)::
    • HTTPS(工作):
    我可能错了,但我认为这里的关键是只有HTTP不起作用,只有VS调试器,其他一切都很好(HTTP和HTTPS不进行调试,HTTPS进行调试)。


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

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


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