PDA

View Full Version : مشکل عجیب با session end و فایل Global.asax



roomezonline
دوشنبه 29 فروردین 1390, 17:13 عصر
سلام به تمامی دوستان خوب برنامه نویسم

دارم یه پروژه مینویسم که در حین کار به مشکل عجیبی برخوردم

من از Session Start & Session End در فایل Global.asax برای insert پارامتر در یه فایل txt استفاده کردم

شرح :

در متد session start یه فایل تکست ساخته میشه و دقیقه زمان جاری رو insert میکنه


Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
Dim file As New System.IO.StreamWriter("1.txt")
file.WriteLine(Now.Minute)
file.Close()
End Sub



حال در Session End کلمه رومز آنلاین ( RoomezOnline ) به جای ایتم قبل insert میشه



Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
Dim file As New System.IO.StreamWriter("1.txt")
file.WriteLine("roomezonline")
file.Close()
End Sub



مشکل:

اگر مسیر فایل تکست رو در کنار پروژه ( Root ) بسازم


Dim file As New System.IO.StreamWriter(Server.MapPath("1.txt"))

Session start ساخته و ایتم با موفقیت وارد میشود
اما
session end کار نمیکنه در واقع اصلا session time out نمیشه

اما اگر مسیر فایل تکست را پیشفرض بذارم session end کار میکنه


Dim file As New System.IO.StreamWriter("1.txt")



در ضمن session time out روی یک دقیقه تنظیم شده در webconfig


<sessionState timeout="1"></sessionState>


حال من باید چیکار کنم که بتونم فایلم رو در کنار پروژم بسازم چون هاست ها معمولا اجازه ساختن در درایور c سرور رو نمیدن

لطفا راهنمایی کنید
با سپاس

roomezonline
دوشنبه 29 فروردین 1390, 23:15 عصر
اقا یکی راهنمایی کنه .

roomezonline
دوشنبه 29 فروردین 1390, 23:47 عصر
از مدیران خواهش میکنم یه نگاهی به مشکل من هم بکنند

roomezonline
سه شنبه 30 فروردین 1390, 16:15 عصر
یعنی اینقدر سخته که بعد از 24 ساعت کسی پیدا نشد که جواب سوال رو بده .

roomezonline
سه شنبه 30 فروردین 1390, 19:40 عصر
بعد از این همه انتظار دوست خوبم بابک مشکلم رو حل کرد منم راه حل رو اینجا میزارم واسه دوستانی که به این مشکل برخورد کردند




Session_OnEnd() does not support the Request, Response or Server objects. The only built-in objects you can use are session and application. So, for example, if you need to use a server.mapPath directive, store the fully qualified path in an application variable BEFORE the session ends.

برای این کار باید مسیر فایل رو توی یه متغیر از نوع استرینگ بذاری بعد توی Application_Start بهش مقدار بدی بعد در session_end استفاده کنی



Dim ad As String

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
ad = Server.MapPath("ms/1.txt")
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)

End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
Dim file As New System.IO.StreamWriter(Server.MapPath("ms/1.txt"))
file.WriteLine(Now.Minute)
file.Close()
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)

Dim file As New System.IO.StreamWriter(ad)
file.WriteLine("roomezonline")
file.Close()

End Sub
</script>