【问题标题】:How to Debug Initialize() in web application如何在 Web 应用程序中调试 Initialize()
【发布时间】:2011-12-12 18:09:17
【问题描述】:

我正在尝试创建一个在应用程序初始化时调用的方法,除了创建 Web 应用程序时,您只能通过将其附加到 IIS 进程 (w3wp.exe) 来对其进行调试。

问题是这个进程只在初始化应用程序后创建,这使得在调用该方法之前无法将 Visual Studio 调试器附加到它。

谁有解决办法??

【问题讨论】:

  • web 应用程序可以通过按 f5 来调试,不是吗?问题不清楚,请说清楚

标签: c# debugging iis


【解决方案1】:

您可以使用 Visual Studio 附带的 Cassini Web 服务器。在项目的 Web 设置中,您应该选择 User Visual Studio Development Server。这将允许您通过按 F5 来调试应用程序。

如果您确实需要在 IIS 中进行调试,您可以通过调用 Debugger.Break 来强制调试器中断您的 Initialize 方法。如果您安装了调试器,您将获得附加调试器的选项。

如果您有一个非常笨拙且难以调试的应用程序(除了将其重构为更易于管理和可测试的部分),您可以使用日志记录来检测您的代码。即使在生产环境中,这也将允许您对应用程序进行故障排除。 .NET 内置了对日志记录的支持,并且还有几个不错的开源框架可供您使用。

【讨论】:

  • 应用程序太大,无法使用 Cassini 服务器启动。它调用了许多其他程序集,这些程序集划分在不同的项目中。如果应用程序是小型或中型的,这可能会起作用。我仍在尝试应用可能有效的 Debugger.Break。谢谢!
  • 是否需要安装额外的调试器,还是直接与 VS 调试器一起工作?对我来说,它看起来像是 Break point 的替代品,但仍然存在相同的“附加”问题。
  • 我发现了一个非常糟糕的解决方案,但至少它可以工作。它包括在我想检查某物的值并发送带有该值的消息的地方引发应用程序异常。好消息是我正在二次开发环境中尝试它,我真的不在乎它是否会爆炸!如果我在开发中运行它可能会非常危险,并且由于未最终执行,我可能会丢失严重的数据。
  • @MoslemBenDhaou:它适用于系统上注册的任何调试器。如果您安装 Visual Studio,它将自己注册为调试器。执行Debugger.Break 时,您将看到一个对话框,允许您附加到该进程。这避免了“附加问题”。
【解决方案2】:

将您的项目设置为使用 IIS 而不是 ASP 开发服务器,并创建一个指向您的 UI 开发目录的默认 Web 虚拟目录。这可以通过 Visual Studio 中的项目属性轻松完成。

以调试形式构建,然后您可以从 IIS 浏览您的 Web 或键入项目的 Web 目录。

您需要向 IIS 注册 ASP:

在命令窗口中,导航到“C:\Windows\microsoft.net\framework\v2.0.50727”,其中 C 是您的启动驱动器。

然后运行“ASPNET_REGIIS -i”,将 ASP.NET 注册到 IIS

然后“ASPNET_REGIIS -ga ASPNET”这将授予 IIS 对 ASP.NET 的访问权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2013-02-20
    • 2014-11-22
    • 2015-03-09
    相关资源
    最近更新 更多