C# 附加到未命中断点的进程IIS

C# 附加到未命中断点的进程IIS,c#,asp.net-mvc,iis,C#,Asp.net Mvc,Iis,当我将Visual Studio连接到在IIS中运行的Asp.Core MVC应用程序时,断点不会被命中。我检查了文件所在的IIS文件夹,里面有所需的.pdb文件。这些文件是通过VS中的“发布”命令创建的 我不知道您需要我在这里共享什么,因此很抱歉提供了这么多信息。首先,请确保web.config文件中的debug属性为true 如果调试器未加载.pdb文件,则无法命中Breakpiont。因此,请确保这些符号是由调试器加载的。我们可以通过以下步骤(调试->窗口->模块)检查调试器是否加载此p

当我将Visual Studio连接到在IIS中运行的Asp.Core MVC应用程序时,断点不会被命中。我检查了文件所在的IIS文件夹,里面有所需的.pdb文件。这些文件是通过VS中的“发布”命令创建的


我不知道您需要我在这里共享什么,因此很抱歉提供了这么多信息。

首先,请确保web.config文件中的debug属性为true


如果调试器未加载.pdb文件,则无法命中Breakpiont。因此,请确保这些符号是由调试器加载的。我们可以通过以下步骤(调试->窗口->模块)检查调试器是否加载此pdb文件,然后选择dll模块以查看是否加载了pdb文件。如果未加载pdb文件,我们可以手动加载(右键单击dll模型->选择加载符号)。

首先,请确保web.config文件中的debug属性为true


如果调试器未加载.pdb文件,则无法命中Breakpiont。因此,请确保这些符号是由调试器加载的。我们可以通过以下步骤(调试->窗口->模块)检查调试器是否加载此pdb文件,然后选择dll模块以查看是否加载了pdb文件。如果未加载pdb文件,我们可以手动加载(右键单击dll模型->选择加载符号)。

我假定您指的是完整的IIS,而不是IIS Express

在Visual Studio的项目属性中检查“Web”设置。您正在寻找三件事:

  • 从下拉列表中选择“本地IIS”
  • “项目Url”准确无误(应与您用于访问网站的Url相匹配)。如果它是错误的,那将导致你正在经历的问题(我根据经验说话)
  • 在“调试器”下选择“ASP.NET”

  • 请查看此处的说明,包括屏幕截图:

    我想您指的是完整的IIS,而不是IIS Express

    在Visual Studio的项目属性中检查“Web”设置。您正在寻找三件事:

  • 从下拉列表中选择“本地IIS”
  • “项目Url”准确无误(应与您用于访问网站的Url相匹配)。如果它是错误的,那将导致你正在经历的问题(我根据经验说话)
  • 在“调试器”下选择“ASP.NET”

  • 查看此处的说明,包括屏幕截图:

    我最喜欢的在本地调试IIS/IIS Express的技巧是添加一点代码

    在Global.asax.cs的某个地方

    public static void Application_Initialize() {
     AttachDebugger();
    ...
    }
    
    [Conditional("DEBUG")]
    private void AttachDebugger() {
      if (!System.Diagnostics.Debugger.IsAttached()) {
         System.Diagnostics.Debugger.Launch();
      }
      System.Diagnostics.Debugger.Break();
    }
    

    我最喜欢的在本地调试IIS/IIS Express的技巧是添加一点代码

    在Global.asax.cs的某个地方

    public static void Application_Initialize() {
     AttachDebugger();
    ...
    }
    
    [Conditional("DEBUG")]
    private void AttachDebugger() {
      if (!System.Diagnostics.Debugger.IsAttached()) {
         System.Diagnostics.Debugger.Launch();
      }
      System.Diagnostics.Debugger.Break();
    }
    

    请确保您的项目Url键入正确。在我的情况下,文件夹名称在主机名之后丢失,即http://localhost/网络应用程序, 这导致断点不会被命中。

    请确保正确键入项目Url。在我的情况下,文件夹名称在主机名之后丢失,即http://localhost/网络应用程序, 这导致断点不会被命中。

    您是以调试而不是发行版发布的吗?是的,我是以调试集发布的。您是以调试而不是发行版发布的吗?是的,我是以调试集发布的。我没有web.config。此外,模块窗口中没有Gorilla.WebApi.dll文件。我们可以按照以下步骤进行操作。我们可以通过以下步骤(调试->窗口->模块)检查调试器是否加载此pdb文件,然后选择您的dll模块以查看是否加载了pdb文件。如果没有加载pdb文件,我们可以手动加载它(右键单击dll模型->选择加载符号)。但是只有System32.dll文件,因此我无法加载项目的符号。请执行此调试->删除所有断点(),然后您可以再次使用它们,但只需执行一次。它还将删除一些“无效”断点,然后在没有web.config的情况下快速加载符号。此外,模块窗口中没有Gorilla.WebApi.dll文件。我们可以按照以下步骤进行操作。我们可以通过以下步骤(调试->窗口->模块)检查调试器是否加载此pdb文件,然后选择您的dll模块以查看是否加载了pdb文件。如果没有加载pdb文件,我们可以手动加载它(右键单击dll模型->选择加载符号)。但是只有System32.dll文件,因此我无法加载项目的符号。请执行此调试->删除所有断点(),然后您可以再次使用它们,但只需执行一次。它也会删除一些“无效”断点,然后加载符号会很快,但不会成功。我按照您提供的microsoft站点上的说明进行了检查,检查了“我做得都正确”,但我的断点从未命中。您的回答为我指出了解决方案。我总是附加到w3wp.exe,但我需要附加到dotnet.exe哦,您正在手动附加到进程。有什么原因吗?使用我描述的安装程序,当您开始调试时,它将自动运行。这是我的解决方案--我的环境选择了IIS Express而不是本地IIS。仍然没有成功,我按照您提供的microsoft站点上的说明进行了操作,并检查了“我是否都正确”,但我的断点从未命中。您的回答将我指向了解决方案。我总是附加到w3wp.exe,但我需要附加到dotnet.exe哦,您正在手动附加到进程。有什么原因吗?使用我描述的设置,当您开始调试时,它将是自动的。这是我的解决方案--我的环境选择了IIS Express而不是本地IIS。Man。。。非常感谢。NP请别忘了投票。我仍然在asp.net内核和azure函数本地调试中使用它。。。非常感谢。NP请别忘了投票。我仍然在asp.net核心和azure函数本地调试中使用它。