В своей собственной разработке я заметил одну вещь: когда вы запускаете код ASP.NET внутри Visual Studio с помощью встроенного отладчика, файловые методы global.asax вызываются даже для файлов изображений и CSS и других несерверных типы файлов. Однако при развертывании кода на сервере IIS этого не сделает (при обычной настройке). У вас есть эта проблема в производственной среде? Или только на вашей локальной машине?
Если вы решите, что проблема заключается в том, что метод вызывается для всех изображений и других ресурсов, и это продолжает оставаться проблемой, тогда вы можете заключить код в блок if, чтобы убедиться, что вы находитесь на ASP. NET страница, прежде чем продолжить. Примерно так:
// This code only runs if the local file requested has ".aspx" in the name somewhere.
if(HttpContext.Current.Request.LocalPath.ToString().IndexOf(".aspx") > 0)
{
const string key = "scanning_forms";
object chack = HttpContext.Current.Items[key];
if (chack == null)
{
// Code I want to execute only once
}
}
Я набрал это по памяти, так что это может быть неправильно. Также это приведет к ложным срабатываниям, если у вас есть файл типа C:\INETPUB\WWWROOT\MYSITE\Resources for .aspx files\images\banner.gif
. Так что вы, вероятно, захотите сделать проверку более надежной. Я оставлю это тебе.