الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Asp.net 2.0 Web Application On Lan(problem

بدأه GHGH1987 في 27 يونيو 2008 · 21 رد · 2,018 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني ،،، هذي المشاركة هي لي الاول في منتداكم المميز وإن شاء الله مش الاخيرة

مشكلتي اوجهها للخبراء والمتمرسين في الـASP.NET 2.0 :-

صممت تطيبق بالاي اس بي وهو عبارة عن نظام لأتمتة الاختبارات وبشكل مبسط وأولي وعلى شكبة محلية، طيب .. مشكلتي اني لما ادخل على السيرفر من الكلاينت وعلى صفحة الخاصة بالطالب ما اشوف الاسئلة اللي هيئـــتهاا وحضرتها على السيرفر،، وهذه الاسئلة تعرض في (DetailsView) عن طريق إستعلام للقاعدة ويمرر له قيم معينة (Parameter) عن طريق الـ(ٍSession) ،، وبعد ذلك يتم تحويل الطالب الى هذه الصفحة لكي يبدأ الاختبار ،، لكن المشكلة انو الكلاينت مايشوف اي قيمة في ال(DetailsView) وكأنه الكلاينت شغال على نسخة ثانية من التطبيق بمعنى آخر ماينعكس ال(Update) على الصفحة اللي طالعة عند الكلاينت مع انو جربت ادخل على كل الصفحات وبدون اي مشكلة ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

إعدادات السيرفر والكلاينت مصبوطة من ناحية IIS5.1 والFramework 2.0 والاس كيوال سيرفر مع العلم اني شغال على إصدارة تيم وورك(TeamEdition) لدعمها

إخواني ارجو منكم تنوروني تراني صارلي اسبووووووووع مدوخ ومالكيت حل :S

#2

لم أفهم المشكلة جيداً، و لكن هل تقصد أنك تخزن بارامترات الإستعلام في session من جهاز السيرفر و تريد أن تظهر هذه النتيجة في الكلاينت؟

ّاذا كان هذا هو ما يحدث فاعلم أن الـsession لكل مستخدم منفصل عن المستخدم اآخر.

#3

السلام عليكم،،،،،،

أشكرك أولاً أخي System_Down على تجاوبك .. جزاك الله خير

انا بعرف أنه لكل مستخدم يدش على الصفحة اللي فيها الــ Session اللي تخزن معلومات معينة عن الطالب تكون له Session خاصة به عن طريق الـSessionID والذي يكون تلقائياً.

أنا عامل صفحة خاصة بالدكتور يختار منها مجموعة من الاسئلة المعروضة من بنك الاسئلة المرتبط بقاعدة البيانات SQL SERVER 2005 MANAGEMENT STUDIO EDITION ثم يقوم بتحديد معايير الامتحان من درجة لكل سؤال والوقت وو...ألخ هذا كله على السيرفر (شبكة محلية) ، بعد هذا يقوم بالضغط على زر SEND حيث تخزن في الــSession مجموعة من الارقام عبارة عن Integer Array تمثل أرقام الاسئلة التي حددها المدرس وكذلك Sessions أخرى يخزن فيها رقم المادة و بقية المعلومات من درجات وغيره،،،،،،،،،،طيب

ترسل هذه الــ Sessions الى صحفة الكلاينت اي الطالب وتمرر قيم الــ Question_ID الموضوعة في Session من نوع Integer Array كما ذكرت سابقاً بالإضافة الى رقم المادة في سشن اخرى ، تمرر هذه القيم الى SqlDataSource على شكل باراميترز من نوع Session ويعرض على DetailsView بشكل طبيعي وبدون أي مشاكل :D

أين المشكلة؟؟؟؟؟

المشكلة تكمن في انه عندما يدخل الطالب من جهاز ثاني على الشبكة ويدخل الباسوورد الخاصة ويتم تحويله الى صفحة الامتحان لاتعرض عنده الاسئلة على الــDetailsView؟؟؟ :S بمعنى لا ينعكس عليه التحديث.

الملاحظ انه من جانب الكلاينت لا توجد مشاكل في الوصول الى اي صفحة في الموقع الموجود على السيرفر، كذلك قمت بتجريب عملية فتح New Tab في المتصفح الإصدار السابع وقمت بالدخول على صفحة الطالب وتظهر عندي الاسئلة وتجري العملية بشكل سلس وطبيعي!!!

معلومات إضافية لتوضيح الصورة أكثر:-

1-النظام عند الكلاينت والسيرفر XP SP2 Professional

2-IIS 5.1 منصب عند السيرفر والكلاينت ومسجل عند الــ FrameWork 2.0 بالامر ASPNET_REGIIS -I وذلك نظراً لأني قمت بتنصيبه بعد تنصيب اللغة

3-المتصفح عن السيرفر والكلاينت InternetExplorer 7 (من ضمن الفرضيات اللتي فرضتها أن يكون هو السبب!!)

هل فاتني شي في الإعدادات ؟؟؟؟؟

أرجو أن تكون قد إتضحت مشكلتي بشكل اكبر

أفيدوني أخواني جزاكم الله خيراً

#4

لم أفهم هذه الجملة

"ترسل هذه الــ Sessions الى صحفة الكلاينت"

ماذا تفعل بالضبط؟ كيف ترسل session؟

#5

دلوقتي اللي انا فهمته من كلامك ان الدكتور بيدخل و يختار اسئله معينه و ارقام الاسئله دي بتتخزن في

Session Objects

و بعد كده بتبعت القيم دي لـ

SqlDataSource

و اللي بدوره بيروح يجيب الداتا حسب ارقام الاسئله اللي هي متخزنه في

Session Objects

و لما يجيب الاسئله يعرضها في

DetailsView

انا شايف ان المشكله في انك ما بتخزنش الـ

Session Objects

في قاعدة بيانات و ده السبب في ان الطالب ما بيشوفش التغيير اللي بيحصل , انت ما ينفعش تبعت الـ

Session Objects

للـــ

SqlDataSource

بطريقه مباشره عشان كل مستخدم ليه

Session

, انت الاول لازم تخزنهم في قاعدة بيانات و بعد كده تخللي الـــ

SqlDataSource

يجيب ارقام الاسئله من قاعدة البيانات مش من الـــ

Session Objects

#6
System Down كتب:
لم أفهم هذه الجملة

"ترسل هذه الــ Sessions الى صحفة الكلاينت"

ماذا تفعل بالضبط؟ كيف ترسل session؟

لا أخي طبعا لا أقصد حرفياً إرسالها بالتأكيد! ولكن أقصد عمل Request من الكلاينت للصفحة..أي إستدعاء هذه الــ Sessions من داخل الصفحة التي تعرض للكلاينت،،ولنفرض إنني استدعي السشن التي تحتوي على رقم المادة :-

(Dim Subj_No as Integer=CType(Session("SubjNo"),Integer

غير إنني في هذه الحالة لا اقوم بإستدعائها بهذي الطريقة وإنما مباشرة عند الــSqlDataSource كمتغير (Parameter) يأخذ قيمته من الــSession والتي تحمل قيمة رقم المادة.

وكذلك الحال بالنسبة للـسشن الخاصة بأرقام الاسئلة والتي هي عبارة عن Integer Array.

عفوا أخواني ولكني كما اسلفت سابقاً بأن العملية هذه تجري بشكل سليم على السيرفر ، البيانات تستجلب من القاعدة وتعرض في الــ DetailsView بشكل طبيعي.ولكن المشكلة عند الدخول للصفحة من الكلاينت

حتى بالنسبة للــTheme الذي اقوم بإختياره لصفحات التطبيق لا يتأثر بها الكلاينت!

أي لا تنعكس هذه العملية على الكلاينت وكأنه هو شغال على نسخة أو منفصل.علما انني قد واجهتني هذه المشكلة بشكل مقارب لهذه الحالة ولكن كان عند عمل Group Policy على مجموعة من الاجهزة عن طريق ويندوز سيرفر كان فيه جهاز لا تنعكس عليه هذه الإجراءات ودوخني فوقتها ؟؟؟ وبعدين لقيت الحل انو كان في DNS أي بإعطاء Static IP للسيرفر و تحديده عند الكلاينت وانحلت فوقتها والحمدلله

قصدي ان المشكلة هنا مشابهة نوعاً ما لتلك المشكلة،،،والله المعين

#7
tamer abdelaziz كتب:

دلوقتي اللي انا فهمته من كلامك ان الدكتور بيدخل و يختار اسئله معينه و ارقام الاسئله دي بتتخزن في

Session Objects

و بعد كده بتبعت القيم دي لـ

SqlDataSource

و اللي بدوره بيروح يجيب الداتا حسب ارقام الاسئله اللي هي متخزنه في

Session Objects

و لما يجيب الاسئله يعرضها في

DetailsView

انا شايف ان المشكله في انك ما بتخزنش الـ

Session Objects

في قاعدة بيانات و ده السبب في ان الطالب ما بيشوفش التغيير اللي بيحصل , انت ما ينفعش تبعت الـ

Session Objects

للـــ

SqlDataSource

بطريقه مباشره عشان كل مستخدم ليه

Session

, انت الاول لازم تخزنهم في قاعدة بيانات و بعد كده تخللي الـــ

SqlDataSource

يجيب ارقام الاسئله من قاعدة البيانات مش من الـــ

Session Objects

هل تقصد أخي إنه الــ Session Object لا يتم الوصول إليه من أي صفحة في التطبيق؟؟؟؟ إذاً ما الفائدة منه في هذه الحالة إذا كنت سأحتاج لتخزينه في كل مرة في قاعدة البيانات؟

علما واكرر إني جربت الدخول في نفس الوقت الذي تهيأ فيه الاسئلة من قبل المدرس ،، جربت الدخول على صفحة الطالب من السيرفر نفسه طبعا New Tab او ويندو جديدة وكانت الاسئلة موجودة وبحسب الترتيب الذي اختاره المدرس وكل شيء مية مية! فلو أن ما تقوله يحدث فعلا فأعتقد لما ظهرت الاسئلة أساساً ولا حتى في حالة الدخول على صفحة الاسئلة من السيرفر نفسه؟ ألا توافقني الرأي أخي العزيز؟ :D

#8

حسناً الذي فهمته أن هناك جهازان. سيرفر و كلاينت. تتم هناك عمليات على السيرفر و يتم تخزينها في السيشن. و لكن هذه التغيرات لا تنعكس على جهاز الكلاينت. صحيح؟

#9
System Down كتب:
حسناً الذي فهمته أن هناك جهازان. سيرفر و كلاينت. تتم هناك عمليات على السيرفر و يتم تخزينها في السيشن. و لكن هذه التغيرات لا تنعكس على جهاز الكلاينت. صحيح؟

نعم أخي System_Down هذا هو بالضبط الذي يحصل

التغييرات لاتعكس عند الكلاينت عندما يدخل على الصفحة

لا من ناحية عرض البيانات ولا من ناحية تغيير الــ Themes عند السيرفر ،،، لاتعكس ابداً

#10

و لكن إذا كنا تقوم بحفظ التغييرات في السيشن فإن أي جهاز آخر لن يستطيع قراءة هذه التغييرات لأن السيشن خاص فقط بالمستخدم و الجلسة

#11
System Down كتب:
و لكن إذا كنا تقوم بحفظ التغييرات في السيشن فإن أي جهاز آخر لن يستطيع قراءة هذه التغييرات لأن السيشن خاص فقط بالمستخدم و الجلسة

but when i asked the guyz on asp.net forum they told me it's probably a caching issue .. does that ring any bells?!

By the way am using a PageBase in my web application..so lets see

#12

لم توضح بالظبط ما العمل الذي تقوم به PageBase

كما تفضل الأخوان لا يمكنك ان تستخدم Session مباشرة وعليك ان تقو بتخزين الأسئلة بطريقة ما سواء في الداتابيز او ملف xml او خلافه حتى تستطيع الحصول على التغيرات المطلوبة ,,, مع أن الأقرب للـ Session والذي ينعكس على كل المستخدمين ما لم يتوقف الموقع هو Application Object لكنها لا تصلح لحالتك هذه لانك قد تريد حفظ مسائل كثيرة بإختلاف المواد والمحاضرين

The World Must Be Crazy

#13
newbie كتب:
لم توضح بالظبط ما العمل الذي تقوم به PageBase

كما تفضل الأخوان لا يمكنك ان تستخدم Session مباشرة وعليك ان تقو بتخزين الأسئلة بطريقة ما سواء في الداتابيز او ملف xml او خلافه حتى تستطيع الحصول على التغيرات المطلوبة ,,, مع أن الأقرب للـ Session والذي ينعكس على كل المستخدمين ما لم يتوقف الموقع هو Application Object لكنها لا تصلح لحالتك هذه لانك قد تريد حفظ مسائل كثيرة بإختلاف المواد والمحاضرين

Same problem. The client still can’t see the Data on the DetailsView Cotrol, which is its Data Source is the SqlDataSouce1 that selects some Questions and their answers (MCQ) from the DataBase according to the Session Values that comes from the Questions.aspx page. I should also mention here that everything works fine on the Server, i.e. when I save the Questions IDs in the Session Object and open a new tab to request the ClientPage.aspx I see the DetailsView Control with the data (the Questions I selected on Questions.aspx).

As I said before Questions.aspx sends Data (Questions IDs) inside Session Object to the ClientPage.aspx, I will post here some of the code so that things will be very clear.

On Questions.aspx :

Protected Sub Button_Send(ByVal sender As Object, ByVal e As System.EventArgs)

Dim MyStrArr() As String = CType(Session("QID"), Array)

Session.Add("Q", MyStrArr(0))

Response.Redirect("ClientPage.aspx")

End Sub

Session(“Q”) carrys the Questions_ID values as an array.

On ClientPage.aspx:

<asp:SqlDataSource ID="SqlDataSource1"

runat="server" ConnectionString="<%$ ConnectionStrings:TestDataBaseConnectionString %>" SelectCommand="SELECT [Question_Text] as [Question :], [Answer1], [Answer2], [Answer3], [Answer4] FROM [QuestionsBank] WHERE (([Question_ID] = @Question_ID) AND ([subject_NO] = @Subject_NO))">

<SelectParameters>

<asp:SessionParameter DefaultValue="0" Name="Question_ID" SessionField="Q" Type="Decimal" />

<asp:SessionParameter DefaultValue="0" Name="Subject_NO" SessionField="Subj" Type="Decimal" />

</SelectParameters>

</asp:SqlDataSource>

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" CellPadding="4"

DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" Height="183px"

Width="550px" style="left: 352px; position: absolute; top: 166px">

On AppMaster.master.vb :

Partial Class AppMaster

Inherits MasterPage

Protected Sub Themepicker_Command(ByVal sender As Object, ByVal e As CommandEventArgs)

Profile.StylesheetTheme = e.CommandName

Response.Redirect(Request.FilePath, False)

End Sub

End Class

On PageBase.vb :

Public Class PageBase

Inherits Page

Public Overrides Property StyleSheetTheme() As String

Get

Return HttpContext.Current.Profile("StylesheetTheme").ToString()

End Get

Set(ByVal value As String)

HttpContext.Current.Profile("StylesheetTheme") = value

End Set

End Property

End Class

On web.config

<?xml version="1.0"?>

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<connectionStrings>

<add name="TestDataBaseConnectionString" connectionString="Data Source=XZIN\SQLEXPRESS;Initial Catalog=TestDataBase;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient"/>

</connectionStrings>

<appSettings/>

<system.web>

<compilation debug="true">

<assemblies>

<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>

<authentication mode="Windows"/>

<pages pageBaseType="PageBase"/>

<anonymousIdentification enabled="true"/>

<profile enabled="true">

<properties>

<add name="StylesheetTheme" defaultValue="Green" allowAnonymous="true"/>

</properties>

</profile>

</system.web>

</configuration>

I also tried to do the following on the Client side (actually Microsoft Virtual PC 2007) : I accessed the Questions.aspx and selected some questions from the ListBox Control and saved its QIDs on the Session Object, and then I opened a new tab (still on the client) to see if the DetailsView are there holding the Questions that I selected, but that didn’t happen! There was no data.

What’s wrong?? :S

#14

شكرا على التوضيح ولكنك لم توضح نقطة جوهرية تتعلق بـ Questions.aspx و ClientPage.aspx

لا يمكنك تمرير سيشن مالم يكن نفس المستخدم هو الذي انشاأ السيشن في الصفحة الأولى واراد استقباله في الصفحة الثانية

لكي تعرف لماذا لا يتم عرض البيانات عليك ان تتحقق من البارمترات الممرة ل sql

يمكنك التأكد من ان selectparameters تحتوي قيم مضبوطة

يمكنك فحص الباميترات في حدث SqlDataSource OnSelecting

   protected void Sql_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
	{
		for (int i = 0; i < e.Command.Parameters.Count; i++)
		{
			Response.Write(e.Command.Parameters.ParameterName + " : " + e.Command.Parameters.Value + "<br>");
		}
	}

ان كاننت القيم غير التي تتوقع عليك بمراجعة الكيفية التي تبعث وتستقبل بها البارميترات

The World Must Be Crazy

#16

I tried this just now …

I created two aspx pages to do a simple experiment.

I thought maybe it’s a Session Object problem as you guys told me.

On the first page (Default.aspx) :-

#Code

Partial Class _Default

Inherits System.Web.UI.Page

Protected Sub Btn_Send(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Str As String = Me.DropDownList1.SelectedItem.Text

Application("Pass") = Str

Response.Redirect("2.aspx")

End Sub

End Class

On the second Page (Client.aspx):-

#Code

Partial Class _Client

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim Str As String = CType(Application("Pass"), String)

Me.Label1.Text = Str

End Sub

End Class

So, as you can see it’s a very simple code which on the first page consists of a DropDownList control that holds three items (Animals,Plants,Humans) respectively .. and a button to save the selected item into a application Object and pass it to the second page i.e. Client.aspx

After I created a virtual directory to this web application on IIS 5.1 , gave full permessions, and from the Client Side I accessed the (Default.aspx) page and selected the 2nd item which was plants and clicked the send button - srry for the boring details! - .. I went back and accessed the (Client.aspx) from the server .. but as usual I got nothing!! Just a blank page

I did the same think on the Server Side and checked the Client.aspx from the client side .. and also I got nothing .. I mean I can access the page in both sides but theres no data .. which I sent from the Default.aspx page .. also there’s no need to mention that I see the data I sent from the first page when I access the Client.aspx from the same Machine (i.e. both the Client or Server) .

Any suggestions .. would be very apperciated

#17

لديك مشكلة اخرى ,,, جربت على iis وفتحت client.aspx من عدة اجهزة وهي تعمل

	 string Str = this.DropDownList1.SelectedItem.Text;
		Application["Pass"] = Str;
		Response.Redirect("Client.aspx")

وكما قلت لك سابقا هذا الأمر يعتمد على ما تريد حفظه في Application ولا اعتقد انه يناسب الاسئلة والاجوبة

لا تيأس هناك دائما حل ,, اسمع راي الاخوان فيما اقترحوه عليك

سؤال جانبي ولست ملزما : كيف يقوم الاستاذ او الدكتور باختيار الأسئلة من بنك المعلومات

The World Must Be Crazy

#18

The problem has been resolved by using the application object in the first page and then retreiving its value to a session object in the second page .. and on the IIS 5.1 settings when pressin the create button also press the configuration button and in the Debugging tab check both checkboxes: ENABLE ASP SERVER-SIDE SCRIPT AND DEBUGGING ,

............... CLINET-SIDE ........ETC

thank you all :D

#19

Tip: Find and learn the difference between an Application object and a Session object. The difference is very important and not very obvious at first, but it can be the difference between getting a good job or being fired :)

#20
obvious at first, but it can be the difference between getting a good job or being fired

:D

نصيحة في محلها ,,,بعض الامور تكون قاتلة فعلا

The World Must Be Crazy

#21

lol .. i agree with you guys .. thx alott :)

#22
newbie كتب:
لديك مشكلة اخرى ,,, جربت على iis وفتحت client.aspx من عدة اجهزة وهي تعمل

	 string Str = this.DropDownList1.SelectedItem.Text;
		Application["Pass"] = Str;
		Response.Redirect("Client.aspx")

وكما قلت لك سابقا هذا الأمر يعتمد على ما تريد حفظه في Application ولا اعتقد انه يناسب الاسئلة والاجوبة

لا تيأس هناك دائما حل ,, اسمع راي الاخوان فيما اقترحوه عليك

سؤال جانبي ولست ملزما : كيف يقوم الاستاذ او الدكتور باختيار الأسئلة من بنك المعلومات

Sorry my friend I almost forgot to answer your question, :lol:

The Prof/Lecturer selects the Questions from the DataBase through ListBox Controls and as you can imagine their DataSource is SqlDataSource Data control .. hope i asnwered your qeustion buddy ..tc

مواضيع مشابهة