我已经在我的global.asax文件中用application_start()方法编写了一些代码。当我在IIS服务器上部署我的应用程序时,它没有被调用。当我在.NET框架中运行代码时,它是可访问的。
我已经多次尝试重新启动应用程序,但它仍然不起作用。
我还尝试了以下链接中的建议。
发布于 2014-09-23 11:57:52
在尝试调试Appplication_Start之前,您需要了解一些事情。这里有-
One :什么时候执行代码,以及为什么几乎不可能通过附加到它来进行调试。
当应用程序池启动并且您的网站是第一次启动时,将执行应用程序启动方法。如果您将新的可交付内容部署到IIS,则IIS可能会自行重新启动它,但不能保证它一定会重新启动。因此,部署新代码并不能保证它会重新启动池并启动应用程序的执行。您应该重新启动应用程序池以保证应用程序启动的执行。
在调试IIS应用程序时,Visual Studio将自己附加到一个名为w3wp.exe或类似的进程(我忘记了实际的可执行文件名称),它是工作进程,并且只有在您的应用程序池和站点启动后才可用。因此,换句话说,如果您在服务列表中看到这一点,则应用程序启动已经执行,附加到它将不会给您提供调试它的机会。这是一种与时间的拉锯战。
因此,换句话说,除非您非常非常快速,否则调试应用程序启动几乎是不可能的。
2,解决方案1-使用开发服务器
使用Asp.net开发服务器或IIS express在visual studio中启动应用程序,然后就可以进行调试了。但是,如果您确实希望在IIS上进行调试,请查看下一节
2,解决方案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将暂停执行,并显示调试器选择器窗口(与附加的窗口类似)

,保持您的解决方案在vs中打开,并从列表中选择该vs,将能够像往常一样调试...:)
如果您使用的是Windows8,但调试器无法启动,请阅读本文以启用它-
Three:一件非常重要的事情
我注意到您说,您正在Application_Start中添加db条目。您应该记住,Application_Start没有HttpContext和ViewContext,因此您的数据库访问代码可能会因为许多其他原因而失败。
发布于 2016-01-06 23:34:04
确保Global.asax文件实际部署到根目录中的目标文件夹。如果该文件不存在,那么您为Application_Start编写的代码将永远不会被调用。
还要确保签名是正确的
public class Global : System.Web.HttpApplication {
protected void Application_Start(object sender, EventArgs e) {/*do something here like logging so you know it was called*/}
}发布于 2016-01-06 23:57:06
如果您运行的是Server 2008R2 (或更早版本)和/或IIS 7.5,则可能需要查看应用程序初始化模块。可以在此处下载:
www.iis.net/downloads/microsoft/application-initialization
对于8.0之前的IIS版本,直到第一个web请求到达时才调用应用程序启动。我正在读你的问题,因为你希望你的应用程序在第一个web请求之前开始被触发,对吗?
这里有一个很棒的配置这个模块的指南(如果它适用于你):https://blogs.msdn.microsoft.com/benjaminperkins/2014/01/07/configure-the-iis-application-initialization-module/
关键的要点是你需要将你的应用程序池设置为'AlwaysRunning‘而不是'OnDemand’。你还需要为你的网站设置一个preloadEnabled标志。完成这两项操作后,执行iisreset,您应该会看到应用程序启动的结果(查看数据库,因为它正在那里编写代码)。
其他的答案也是相关的,因为这很难调试,而且你错过了所有你习惯的细节,比如app start中的httpcontext。
如果您运行的是IIS 8.0 -您仍应阅读上面的链接以配置预加载。
https://stackoverflow.com/questions/25973106
复制相似问题