【发布时间】:2011-12-12 18:09:17
【问题描述】:
我正在尝试创建一个在应用程序初始化时调用的方法,除了创建 Web 应用程序时,您只能通过将其附加到 IIS 进程 (w3wp.exe) 来对其进行调试。
问题是这个进程只在初始化应用程序后创建,这使得在调用该方法之前无法将 Visual Studio 调试器附加到它。
谁有解决办法??
【问题讨论】:
-
web 应用程序可以通过按 f5 来调试,不是吗?问题不清楚,请说清楚
我正在尝试创建一个在应用程序初始化时调用的方法,除了创建 Web 应用程序时,您只能通过将其附加到 IIS 进程 (w3wp.exe) 来对其进行调试。
问题是这个进程只在初始化应用程序后创建,这使得在调用该方法之前无法将 Visual Studio 调试器附加到它。
谁有解决办法??
【问题讨论】:
您可以使用 Visual Studio 附带的 Cassini Web 服务器。在项目的 Web 设置中,您应该选择 User Visual Studio Development Server。这将允许您通过按 F5 来调试应用程序。
如果您确实需要在 IIS 中进行调试,您可以通过调用 Debugger.Break 来强制调试器中断您的 Initialize 方法。如果您安装了调试器,您将获得附加调试器的选项。
如果您有一个非常笨拙且难以调试的应用程序(除了将其重构为更易于管理和可测试的部分),您可以使用日志记录来检测您的代码。即使在生产环境中,这也将允许您对应用程序进行故障排除。 .NET 内置了对日志记录的支持,并且还有几个不错的开源框架可供您使用。
【讨论】:
Debugger.Break 时,您将看到一个对话框,允许您附加到该进程。这避免了“附加问题”。
将您的项目设置为使用 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 的访问权限
【讨论】: