gpt4 book ai didi

c# - Application_start 不工作

转载 作者:太空狗 更新时间:2023-10-30 00:51:38 24 4
gpt4 key购买 nike

我在 global.asax 文件的 application_start() 方法中编写了一些代码。当我在 IIS 服务器上部署我的应用程序时,它不会被调用。当我在 .NET 框架中运行代码时,它是可访问的。

我已经多次尝试重新启动应用程序,但它仍然无法正常工作。

我还尝试了以下链接中的建议。

Application_Start not firing?

最佳答案

在尝试调试 Appplication_Start 之前,您需要了解一些事情。有——

一:代码何时执行以及为什么几乎不可能通过附加到它来调试。

应用程序启动方法在应用程序池启动并且您的网站首次启动时执行。如果您将新的交付物部署到 IIS,那么 IIS 可能会自行重启,但不能保证它会这样做。因此,部署新代码并不能保证它会重新启动池和应用程序启动的执行。您应该重新启动应用程序池以保证应用程序启动的执行。

在调试 IIS 应用程序时,Visual Studio 将自己附加到一个名为 w3wp.exe 或类似名称(我忘记了实际可执行文件名称)的进程,这是工作进程并且仅在之后可用,记住之后,您的应用程序池已启动,您的站点已启动。所以,换句话说,如果你在服务列表中看到这个,那么应用程序启动已经被执行并且附加到它不会给你调试它的机会。这是一场与时间的拔河比赛。

所以,换句话说,调试应用程序启动是不可能的,除非你非常非常快。

二、方案一——使用Dev Server

使用 Asp.net 开发服务器或 IIS Express 在 vi​​sual studio 中启动您的应用程序,然后您就可以进行调试了。但是如果你真的想在 IIS 上进行调试,那么请查看下一节

二、解决方案2——使用IIS

System.Diagnostics 中有一个库,Debugger,它有一种在代码中调用调试器的好方法。您可以在这里阅读 - http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break(v=vs.110).aspx

从这个开始修改你的应用程序 -

public void Application_Start(){
....... //other codes
Debugger.Break() or Debugger.Launch()
}

当该行执行时,IIS 将停止执行,并显示一个调试器选择器窗口(类似于附件)enter image description here ,让你的解决方案在 vs 中打开并从列表中选择那个 vs,将能够像往常一样调试......:)

如果您使用的是 Windows 8 而调试器未启动,请阅读本文以启用它 -

http://blogs.msdn.com/b/mapo/archive/2013/11/07/debugger-launch-not-displaying-jit-debugger-selection-popup-on-windows-8-8-1.aspx

三:一件很重要的事

我注意到您说过,您正在 Application_Start 中添加数据库条目。您应该记住,Application_Start 没有 HttpContextViewContext,因此您的数据库访问代码可能会因许多其他原因而失败。

关于c# - Application_start 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25973106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com