简体   繁体   中英

Global.asax not firing for Release build

One of our applications has a mechanism for emailing our Helpdesk automatically should it encounter a certain level of exception. One particular exception, a NullReferenceException, is causing a few problem and I believe it is caused by IIS recycling and losing the session. To prove this I want to log when the application is started/stoped/recycled and have added some code to the global.asax file to do this. Running on Debug mode the log messages are written out and all seems well. The problem comes when I switch to Release build, which triggers a Web Deployment Project to build to a folder configured in IIS.

When I navigate to the application the ApplicationStart method is not being called as the log file is not created and the Event Log is not updated. When I restart IIS the same happens for ApplicationEnd, ie not logs are created.

Why is it working for Debug builds but not Release ones? I've been kicking this around for hours now and it's driving me nuts.

Thanks in advance

**[Edit]: I'm not 100% sure what is going on but it now appears to be working. I thought that maybe the assembly we use for logging might not be loaded by the time ApplicationStart is executed so I removed all the code and just created a text file in the method instead. Behold, the file was created! So I added an if(logger != null) type checking to try to output some diagnostics but nothing was written out. So I tried a try/catch and wrote a blank file "exception.txt" if an exception was thrown but still no file was created - although the event log and expected log file were generated! I'm confused! **

We had this problem and a missing PrecompiledApp.config file was the solution. Without it global.asax events did not fire under IIS6 using an ISAPI filter and the rewritten.aspx approach documented eg on blog.codeville.net. We use msbuild to precompile the site before deploying.

We scratched our heads over this one for a couple of hours when our builds stopped working. Turns out while in obsessive house-keeping mode I had removed this file from source control as I thought it was redundant. Adding it back in fixed the problem.

If you are publishing the app, then do check for PrecompiledApp.config file. If you remove that file from the published site folder, the events would stop firing.

I would make sure that the logging logic is not running into some sort of a permission issue while logging null reference exceptions. Do you have the approprite permissions to access where the log is being written?

If you need to avoid PrecompiledApp file and publish Global.asax , please go to Publish and move to setting tab at bottom and uncheck the precompile during publishing .

Belove image will be help you 在此输入图像描述

We tried a lot of things.

  1. Global.asax is not publishing and event are not firing in Global.asax
  2. Why are the Global.asax events not firing in my ASP .NET website?
  3. global.asax works on local computer but not after i publish to server
  4. Mystery of Global.asax in ASP.NET MVC application

We also tried putting the below files in root and bin directories.

  1. App_global.asax.dll and App_global.asax.compiled files
  2. PrecompiledApp.config

None of it worked!

We had to put raw Global.asax instead of pre-compiled dll, in order to fire the global events, for our asp .net 2.0 website.

Hope this helps someone! Cheers! Happy coding! :D

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM