توضيح در مورد فايل Global.asa

اگه بخواهم توي سايتم كنتور بزارم بايد از فايل Global.asa استفاده كنم .
اگه ميشه در مورد اين فايل يه كم توضيح بدين .
 

aminir

Member
سلام
هر برنامه ASP یا ASP.NET می تونه یه فایل Global داشته با شه که این فایل در دایرکتوری ریشه برنامه مستقر می شه این فایل ویژه توانایی کنترل ایونت ها و اشیاء برنامه مورد نظر رو داره
یک سری از مهمترین ایونت هایی رو که این فایل می شناسه عبارتند از
1-Applicaion_AuthenticationRequest – قبل از شناسایی کاربر این ایونت رخ می دهد
2-Application_AuthorizeRequest – قبل از تعیین اختیارات رخ می دهد
3-Application_BeginRequest- هر دفعه که در خواستی از سرور صورت می گیرد رخ می دهد
4-Application_End –درست قبل از خاتمه تمام نمونه های برنامه رخ می دهد
5-- Application_EndRequest در پایان هر درخواست رخ می دهد
6-Application_Error –خطاهایی که کنترل خاصی رو ی آنها نگذاشتید این ایونت رو حادث می کنند
7-Application_PreSendRequestContent –قبل از ارسال محتوا به مرورگر حادث می شود
8- Application_PreSendRequestHeadres – قبل از ارسال هدر ها به مرورگر حادث می شود
9-Application_Start –بلافاصله بعد از ایجاد اولین برنامه حادث می شود این واقعه فقط یک بار رخ می دهد

تغییر در فایل Global موجب شروع مجدد برنامه می شود و هر اطلاعات که در استیت برنامه ذخیره شده از بین می رود

موفق باشی
 

mazoolagh

Active Member
بازاي هر virtual directory كه شما در IIS ميسازي يك فايل global.asa در root اون ساخته ميشه (در خود wwwroot هم بالطبع هست) كه محتواي اون يك سري كد vbscript يا javascript هست و شما ميتوني ازش براي تعريف عناصر و وقايع مربوط به application و session استفاده كني ولي خودش مستقيما قابل اجرا نيست بلكه رخدادهاي asp application متناظر با اون هست كه اونها رو فراخواني ميكنه.
asp application مجموعه فايلهاي asp هست كه در يك virtual directory و تمام زيرمجموعه اون قرار داره و عنصر application در فايل global.asa براي تعريف عناصري هست كه همه كاربرهاي يك asp application خاص بهش دسترسي دارن.
در مقابل عنصر session وقتي معني پيدا ميكنه كه يك كاربر يكي از صفحات asp يك asp application رو باز كنه. هر عنصري كه در session تعريف بشه تا زماني كه كاربر توي صفحات مختلف همون asp application ميچرخه ثابت ميمونه و اين تا زماني هست كه يا session منقضي (expire بشه) يا توسط كد رها بشه (abandone)

فايل global.asa معمولا 4 رخداد (event) مهم مربوط به application و session رو معين ميكنه.
application_onstart وقتي اجرا ميشه كه يك كاربر براي اولين بار (پس از بالا آمدن سرويس)
يكي از فايلهاي asp يك asp application رو باز كنه.
application_onend وقتي اجرا ميشه كه هيچ sessionي در يك asp application باقي نمونده باشه. يعني يا همه كاربرها اون asp application رو ترك كردن يا اينكه IIS متوقف بشه.
session_onstart هربار كه يك كاربر يكي از فايلهاي asp يك asp application رو درخواست ميكنه اجرا ميشه.
session_onend رو هم كه قبلا گفتيم كي اجرا ميشه.

كار كردن با اين 4 روال در عين حال كه مشكل نيست ولي هم دقت ميخواد هم يك قلق هايي داره.

براي نمايش تعداد كاربرهاي در حال كار ميتوني از كدي شبيه به اي استفاده كني:
کد:
sub application_onstart
application("online_users")=0
end sub

sub session_onstart
application.lock
application("online_users")=application("online_users")+1
application.unLock
end sub

sub session_onend
application.lock
application("online_users")=application("online_users")-1
application.unLock
end sub

اگر دقت كني ميبيني كه در application_onstart مقدار online_users بي مقدمه تعريف شده ولي براي عوض كردنش در session_onstart و session_onend اول application.lock و بعد application.unlock هست. علتش اينه كه application_onstart فقط يكبار و با اولين درخواست اجرا ميشه بنابراين اطمينان داريم كه كس ديگه اي نميتونه مقدار متغير رو تعيين كنه ولي در session_onstart و session_onend اين قضيه صادق نيست.
 

جدیدترین ارسال ها

بالا