【问题标题】:visual studio 2012 debug for asp.net not working using IIS7用于 asp.net 的 Visual Studio 2012 调试无法使用 IIS7
【发布时间】:2012-12-18 11:10:05
【问题描述】:

我无法使用 IIS7 为 ASP 网络运行 Visual Studio 2012 调试。

我已经尝试了以下

IIS 中的 ASP NET 设置

.NET 编译:将默认语言更改为 c#

IIS 设置

平均售价:

  • 将脚本语言更改为 c#(手动)
  • 启用客户端调试:true
  • 启用服务器端调试:true

脚本 - 语言:c#

我也在使用 Asp Net v4.0 应用程序池

我可以更改任何其他设置以使其正常工作吗?

编辑:

我的用户是 Debugger 用户的一部分

错误如下:

无法在 Web 服务器上开始调试。 Web 服务器配置不正确。有关常见配置错误,请参阅帮助。

编辑 2:

这是日志

Software: Microsoft Internet Information Services 7.5
Version: 1.0
Date: 2012-12-18 11:29:55
Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2012-12-18 11:29:55 ::1 DEBUG /tgpwebged/debugattach.aspx - 443 - ::1 - 403 7 5 43

编辑 3:

我已经在 web.config 中手动配置了编译元素。这是实际的配置:

<compilation batch="true" debug="true" defaultLanguage="C#" explicit="false" 
maxBatchGeneratedFileSize="10000" maxBatchSize="10000" 
numRecompilesBeforeAppRestart="100" strict="false" 
tempDirectory="C:\Windows\Temp" urlLinePragmas="false"> </compilation>

也只是为了测试目的,将运行在我的帐户下的用户 ASP NET V4 应用程序池更改为我的帐户。不是 SYSTEM.. 我的个人帐户。还没有成功。

【问题讨论】:

  • 真正的问题是什么?
  • 尝试重建解决方案。有时这会发生在我身上,重建修复它。
  • 您是否将调试器附加到正确的进程?
  • @Nexus23 是的。我可以毫无问题地附加。但无法开始调试
  • 尝试重建解决方案。

标签: c# asp.net .net asp.net-mvc iis


【解决方案1】:

我以前也遇到过这个问题(虽然 VS2012 没有),但以下事情已经奏效了:

  • 确保为集成 Windows 身份验证配置 IIS。
  • 确保启用了 HTTP Keep Alives。
  • 确保http://localhost 在您的网络浏览器中的受信任站点中。

【讨论】:

  • 它是一个 https 连接。但我会尝试这些选项
  • 上述所有步骤都是应有的方式,但仍然无法使调试工作。谷歌浏览器无法添加可信站点。尽管客户端提供了有效的客户端证书,并且在没有调试模式的情况下运行的系统可以接受。
【解决方案2】:

您可以将调试器附加到 w3wp 进程并以这种方式进行调试吗?

这是一篇文章:Attatch debugger to an IIS process

【讨论】:

  • 添加日志即可。可能有帮助。我会试试的
  • 我无法附加。无法附加到进程。 MSVSMON.EXE 无法启动。
  • @Jamie Townsend 刚刚设法附加到 IIS 进程。但是如何执行代码呢?它只是附加的。没有选项启动应用程序一次 vs 附加到进程
  • 如果您使用 IIS,当您在浏览器中查看应用程序时,您已经在运行该应用程序。附加到进程。如果要调试代码的某个部分,请设置断点
【解决方案3】:

尝试在命令行中运行以下命令:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe -i

【讨论】:

  • 我已经执行了该操作。 Asp net 4 已安装
【解决方案4】:

通常您必须以本地管理员身份运行 Visual Studio 才能进行调试。

【讨论】:

    【解决方案5】:

    我在 VS2010 上遇到了类似的问题,站点托管在 IIS7.5 上。我正在尝试按 F5 并让我的网站启动一个自动附加调试器。

    我认为关键是您日志中的这一行:

    2012-12-18 11:29:55 ::1 DEBUG /tgpwebged/debugattach.aspx - 443 - ::1 - 403 7 5 43
    

    据我所知,debugattach.aspx 是 VS 在实际启动和运行您的应用程序之前会尝试调用的某种钩子。互联网上关于这个东西实际上是什么的细节有点粗略,但似乎如果你没有获得 200(成功)VS 将无法自动附加。基本上它在第 1 步失败。在您的日志中,您有一个 403(授权错误)的请求,我的日志中有一个 404(未找到)。

    在您的特定情况下,您的 IIS 配置中可能存在阻止 DEBUG 动词的内容。阻止不常见的动词或除 POST 和 GET 之外的任何内容是一种常见的安全做法。就我而言,它可能是相似的——aspx 扩展名可能被过滤掉了。它也可能是相关应用的默认身份验证设置。

    更新:我确实解决了这个问题,但有两个不同的地方是错误的。首先,我使用 UrlScan.dll 来确保安全,它阻止了 DEBUG 动词。此外,我使用 UrlRewrite 规则从 HTTP 转到 HTTPS,它生成的 302 重定向也阻止了这个 VS 请求。我能够使用 IIS Failed Request Tracing 功能找到这两个问题。该工具的日志可以让您深入了解管道中的各种模块和处理程序正在做什么。

    希望这会有所帮助!

    【讨论】:

      【解决方案6】:

      我也遇到了同样的情况。我已经解决了,我是这样做的:

      • 检查 IIS 上的 .NET Framework 版本是否正确。
      • 检查您的应用程序池的管道模式,对于某些应用程序 - 它只允许 Classic mode
      • 检查应用程序下是否有其他要调试的应用程序。

      【讨论】:

      • 使用列表标记使帖子更具可读性。
      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多