我研究了很多但什么都没有......
发布网站时, Application_Start
事件未触发。但它在localhost中工作正常。发布后,我在Bin文件夹中获得了App_global.asax.dll和App_GlobalResources.compiled,并且在根目录下也有PrecompiledApp.config。
答案 0 :(得分:4)
第一次运行Application时会触发Application_Start事件。它与重新启动计算机或重新启动IIS无关。您是否尝试过制作新的示例应用程序并测试该应用程序的Application_Start事件是否运行良好。如果是,则表示您的应用程序配置已损坏。
也许重新启动您的应用程序池可以帮助您。
答案 1 :(得分:0)
可能是这个事件按预期被触发了,但是由于你正在执行预编译的web,并且在发布模式下,没有调试符号 - 在尝试远程调试应用程序的情况下 - 。
另一个可能的原因是它正在触发,但是在Application_Start处理程序中抛出了一些异常,并且由于每个应用程序生命周期调用一次,因此您需要回收应用程序池或重新启动整个IIS。
答案 2 :(得分:0)
你的代码,在其他评论中说:
protected void Application_Start(Object sender, EventArgs e) {
logfile.ErrorLog("UserErrorLog\\UserErrorLog.txt", "Application_Start method executed at " + System.DateTime.Now);
DoSomeWork();
logfile.ErrorLog("UserErrorLog\\UserErrorLog.txt", "Application_Start method execution ends at " + System.DateTime.Now);
}
在正常的IIS设置中写入UserErrorLog\\UserErrorLog.txt
会有问题,它会尝试在%SYSTEMROOT%\System32\Inetsrv
内的某处写入,这是IIS的执行目录。您需要指定绝对路径(C:\Logs\...
)或使用HostingEnvironment.MapPath来解析基于应用程序的路径(HostingEnvironment.MapPath("~/App_Data/Logs/...")
)