application_start 不工作

Ami*_*kha 5 .net c# asp.net

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

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

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

Application_Start 未触发?

bra*_*der 4

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

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

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

在调试 IIS 应用程序时,Visual Studio 将自身附加到一个名为w3wp.exe或类似名称的进程(我忘记了实际的可执行文件名称),这是工作进程,只有在应用程序池启动并且站点启动后才可用。因此,换句话说,如果您在服务列表中看到此内容,则说明应用程序启动已经执行,并且附加到它不会给您调试它的机会。这有点像与时间的拉锯战。

因此,换句话说,除非您非常非常快,否则调试应用程序启动是不可能的。

二、解决方案1-使用Dev Server

使用 Asp.net 开发服务器或 IIS Express 在 Visual Studio 中启动您的应用程序,然后您就可以进行调试。但如果您确实想在 IIS 上进行调试,请查看下一节

二、解决方案2--用IIS

名称中有一个库System.DiagnosticsDebugger它有一个很好的方法在代码中调用调试器。您可以在这里阅读 - 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()
}
Run Code Online (Sandbox Code Playgroud)

当这一行执行时,IIS 将停止执行,并显示一个调试器选择器窗口(类似于所附的窗口)在此输入图像描述,保持你的解决方案在 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 没有HttpContext, ViewContext,因此您的数据库访问代码可能会因许多其他原因而失败。