موصى به: طريقة ASP.NET للحصول على عنوان IP و MAC طريقة الحصول على عنوان IP الخاص بالخادم بسيطة وعملية لاستخدام طريقة DNS ، على النحو التالي: private void buttonip_click (sender Object ، system.EventArgs e) {system m.net.ipaddress []
7.4.4 باستخدام صفحة خطأ IIS
ما يتعلق بعملية معالجة أخطاء ASP هو تزويد IIS بصفحات خطأ قابلة للتخصيص. في الواقع ، تم العثور على هذه الميزة أيضًا في IIS 4.0. لكن كائن ASP المدمج الجديد ASPERROR أسهل في الاستخدام ويوفر ميزات أكثر قوة.
في الفصل 4 ، عندما ننظر إلى طرق server.execute و server.transfer ، تحدثنا بالفعل عن كيفية إنشاء صفحة خطأ مخصصة. ناقشنا أيضًا واستخدمنا كائن Asperror ، لكن هذه الطريقة تخضع لبعض القيود. في هذا القسم ، سنقدم كيفية الجمع بين صفحة خطأ مخصصة مع كائن Asperror لإنشاء طريقة أفضل للتعامل مع أخطاء ASP.
يمكننا استخدام VBScript للتحقق من محتويات كائن Asperror ، وبالتالي إنشاء صفحة خطأ مخصصة. قم بإنشاء سلسلة تحتوي على معلومات شاملة حول محتوى الخطأ واكتبها إلى ملف سجل على قرص الخادم. ومع ذلك ، لا يمكن تصميم صفحة ويب لجعل الزائر فقط يرى أن صفحة الويب غير متوفرة. يجب أن يسمح للزائرين باختيار ما إذا كان سيتم إعادة تحميل صفحة الويب السابقة أو العودة إلى الصفحة الرئيسية ، بحيث لا يكونون على دراية بحدوث خطأ.
على الرغم من أننا نستخدم VBScript لإنشاء صفحة الويب هذه ، إلا أن بعض الميزات التي تستخدمها تنطبق أيضًا على JScript ، كما أنه من الأسهل أيضًا تحويل لغتي البرمجة النصية.
يمكن تنزيل نموذج ملفات لهذا الفصل والفصول الأخرى من هذا الكتاب من موقع http://www.wrox.com.
1. إعداد صفحات خطأ مخصصة
قبل أن تتمكن من استخدام صفحة خطأ مخصصة ، يجب عليك إعداد الإعدادات المقابلة في مدير خدمات الإنترنت (انظر الفصل 4 لإنشاء الأساليب). قم بتحميل ملف العينة في دليل wwwroot للكمبيوتر ، وافتح مربع الحوار خصائص للدليل الفرعي للفصل 07 ، في علامة تبويب الأخطاء المخصصة ، قم بالتمرير وقم بتحديد خطأ HTTP 500: 100 ، انقر فوق زر تحرير خصائص التحرير ، واكتب عنوان URL لصفحة الخطأ المخصصة المخصصة custom_error.asp
الآن عندما يحدث خطأ في ASP في الصفحة في الفصل الفرعي الفصل 07 ، سيتم فتح صفحة الخطأ المخصصة.
2. استخدم صفحة الخطأ المخصصة
افتح دليل الفصل 07 في متصفحك وحدد الرابط لاستخدام صفحة خطأ مخصصة. تعرض هذه الصفحة سلسلة من الأزرار لإنشاء أنواع مختلفة من الأخطاء. انقر فوق الزر المحدد تحميل صفحة مع خطأ في بناء الجملة
سيؤدي ذلك إلى تحميل صفحة بسيطة تسمى Syntax_error.asp. ومع ذلك ، لا يمكن رؤية هذه الصفحة لأن هذه الصفحة تحتوي على خطأ في بناء الجملة. ينهي ASP تجميع/تنفيذ هذه الصفحة وينقل التنفيذ إلى صفحة الخطأ المخصصة. تعرض هذه الصفحة تفاصيل الخطأ واثنين من الأزرار ، والتي يتم استخدامها للعودة إلى الصفحة السابقة (القائمة الرئيسية) أو للعودة إلى الصفحة الرئيسية الافتراضية لموقع الويب.
تعرض هذه الصفحة أيضًا تقرير الخطأ إلى ملف السجل المسماة custom_error.log في مجلد القرص C:/temp. يمكن فتحه وعرضه في محرر الملفات. سجل ملف السجل عدة أخطاء.
إذا تلقيت رسالة في الصفحة ، مما يشير إلى أنه لا يمكن كتابة ملف السجل ، فقد يكون ذلك لأن حساب IUSR_Machinename (اسم IUSR_COMPUTER) لا يحتوي على إذن للوصول إلى دليل C:/TEMP. عند اختبار هذه الصفحة ، يجب منح حساب iusr_machinename جميع التحكم في هذا الدليل ، أو يجب تغيير رمز البرنامج الخاص بصفحة custom_error.asp للإشارة إلى مجلد حيث يكون لدى IUSR التحكم الكامل.
السبب الوحيد وراء ظهور رسالة الخطأ في الصفحة هو أنه في صفحة cause_error.asp ، حددنا مربع الاختيار المقابل. إذا قمت بإيقاف تشغيل هذا الخيار وانقر فوق الزر مرة أخرى ، فلن ترى تفاصيل الخطأ ، ولكن لا تزال رسالة الخطأ مسجلة في ملف سجل الخطأ custom_error.log على قرص الخادم.
توفر خانة الاختيار معلومات الأخطاء التي تعرض تصحيح الأخطاء صفحات خطأ مخصصة (بدلاً من ملفات السجل) مزيد من المعلومات وتساعد على تصحيح الصفحات التي تستخدم قيم جمع الكائنات المدمجة ASP.
ستتم مناقشة هذه المشكلة لاحقًا في القسم التالي من هذا الفصل ، ويمكنك أيضًا التعرف على أنواع أخرى من معلومات الخطأ التي توفرها أزرار أخرى على صفحة الخطأ. لاحظ أن بعض الأزرار يمكن أن توفر معلومات أكثر من غيرها. على وجه الخصوص ، يعطي الزر الأخير فقط قيمة رمز خطأ ASP (فيما يلي ASP 0177).
(1) وظائف سبب خطأ
كما هو الحال مع الصفحات المثال التي تمت مناقشتها مسبقًا ، فإن الصفحات التي تتسبب في استخدام الخطأ تستخدم نفس التقنية ، باستخدام <Porm> لإرسال القيمة إلى نفس الصفحة. ثم انقر فوق الزر "إرسال" في نافذة عرض برنامج ASP ، ثم قم بتشغيل الجزء المقابل من الرمز. تحقق أيضًا مما إذا تم تحديد خانات الاختيار في الصفحة. إذا كان الأمر كذلك ، فإن البرنامج يقوم أولاً بتعيين متغير واحد أو اثنين من المتغيرات على مستوى الجلسة للإشارة إلى ذلك.
<٪
معرفة ما إذا كنا نعرض معلومات الخطأ وتصحيح الأخطاء
قم بتعيين متغيرات الجلسة لاستردادها في صفحة الخطأ المخصصة
إذا كان Len (request.form (chkshowerror)) ثم
جلسة (دش) = نعم
آخر
جلسة (دش) =
إنهاء إذا
إذا كان Len (request.form (chkshowdebug)) ثم
جلسة (showdebug) = نعم
آخر
جلسة (showdebug) =
إنهاء إذا
...
٪>
نظرًا لاستخدام server.transfer ، عند حدوث خطأ ، يتم تمرير بيئة ASP بأكملها لصفحة الويب قيد التشغيل إلى صفحة الخطأ المخصصة حسب IIS. ومع ذلك ، لا يتم تمرير قيمة متغير البرنامج النصي إلى صفحة الخطأ المخصصة ، لذلك يجب استخدام متغير الجلسة ، أو يجب إضافة القيمة إلى request.form أو request.quareString Collection من أجل تمرير القيمة إلى صفحة الخطأ المخصصة.
بعد تعيين متغير الجلسة ، يستمر البرنامج في عرض الزر الذي تم النقر عليه. يتم إنشاء كل نوع من الأخطاء (باستثناء النوع الأول) عن طريق تشغيل رمز ASP المقابل ، ويتطلب النوع الأول من الخطأ استدعاء صفحة أخرى.
...
ابحث عن أمر تم إرساله من أزرار قسم النماذج
إذا كان Len (request.form (cmdsyntax)) ثم
استجابة
استجابة. REDIRECT SYNTAX_ERROR.asp
إنهاء إذا
إذا كان Len (request.form (cmdparamtype)) ثم
intdate = خطأ
intday = اليوم (intdate)
إنهاء إذا
إذا كان Len (request.form (cmdarray)) ثم
قاتمة arrthis (3)
arrthis (4) = يسبب خطأ
إنهاء إذا
إذا كان LEN (request.form (cmdfile)) ثم
تعيين objfso = server.createBject (scripting.filesystemObject)
تعيين objtstream = objfso.opentextFile (do_not_exist.txt)
إنهاء إذا
إذا كان Len (request.form (cmdpageCount)) ثم
تعيين OBJPAGECOUNT = server.createBject (mswc.pagecounter)
objpageCount.WrongProperty = 10
إنهاء إذا
إذا كان LEN (request.form (cmdobject)) ثم
تعيين objthis = server.createBject (doNot.exist)
إنهاء إذا
مشاركة: أخيرًا ، وجدت حلاً لعبور حدود ASP Corrcspriving بالأمس ، واجه موقع الويب الخاص بي مشكلة عند إنشاء صفحات محتوى ثابتة. طُلب من ذلك عبور الخط مع التراجع. لم أواجهها من قبل ، لذلك لم أكن أعرف ما كان عليه ، لذلك بحثت عن إجابات عبر الإنترنت ، لكن كان من الصعب حقًا العثور عليها. لقد وجدت الكثير ولكن لم أستطع حل المشكلة الأساسية.