سؤال

لديّ موقع مستودع ASP.NET يعمل على IIS6.0 ولدي مشكلة لا يمكنني إعادة إنتاجها ، لكن ثلاثة من المستخدمين لديهم هذه المشكلة في كل مرة (حوالي 20 مستخدمًا آخر يعمل بشكل جيد). أنا متأكد من أن الأمر له علاقة بإعداد مصادقة IIS ، لكنني بالتأكيد لم أستبعد خطأ ترميز.

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

عند محاولة الانتقال إلى صفحة ViewPage.aspx (ولكن ليس أي صفحة أخرى على الموقع) ، تتم مطالبتها ببيانات اعتماد المستخدم الخاصة بهم. عندما يحاولون تسجيل الدخول ، يتلقون موجه تسجيل الدخول مرة أخرى. بعد محاولة تسجيل الدخول ثلاث مرات ، يتلقون رسالة الخطأ التالية:

HTTP خطأ 401.1 - غير مصرح به: يتم رفض الوصول بسبب بيانات الاعتماد غير الصالحة.

لدى عارض حدث النظام التحذيرات التالية (أكثر من 10 من أحدهما):

EventId: 1011
المصدر: W3SVC
وصف:
عانت العملية التي تقدم تجمع التطبيقات 'sdaapppool' من خطأ في التواصل المميت مع خدمة نشر الويب العالمية. كان معرف العملية "3264". يحتوي حقل البيانات على رقم الخطأ.

و

EventId: 1009
المصدر: W3SVC
وصف:
تم إنهاء العملية التي تخدم تجمع التطبيقات "sdaapppool" بشكل غير متوقع. كان معرف العملية "2088". كان رمز خروج العملية "0x800703E9".

يحتوي عارض الأحداث الأمنية على العديد من مراجعة الفشل التالية:

EventId: 560
المصدر: الأمن
الفئة: الوصول إلى الكائن
وصف:
المفتوح الكائن:
خادم الكائن: SC Manager
نوع الكائن: كائن الخدمة
اسم الكائن: winhttpautoproxysvc
معرف التعامل: -
معرف العملية: {0،557880730}
معرف العملية: 444
اسم ملف الصورة: C: Windows System32 Services.exe
اسم المستخدم الأساسي: EBTOPVNET01 $
المجال الأساسي: EBSS
معرف تسجيل الدخول الأساسي: (0x0،0x3e7)
اسم مستخدم العميل: خدمة الشبكة
مجال العميل: سلطة NT
معرف تسجيل الدخول العميل: (0x0،0x3e4)
الوصول: حالة استعلام الخدمة
ابدأ الخدمة
معلومات الاستعلام من الخدمة
الامتيازات: -
عدد SID المقيد: 0
قناع الوصول: 0x94

يحتوي عارض حدث التطبيق على الأخطاء التالية:

EventId: 5000
المصدر: .NET Runtime 2.0 خطأ
المستخدم: n/a
وصف:
EventType CLR20R3 ، P1 W3WP.EXE ، P2 6.0.3790.3959 ، P3 45D691CC ، P4 System.Data ، P5 2.0.0.0 ، P6 4889ECE0 ، P7 1849 ، P8 0 ، P9 System.Stackoverflowception ، P10 Nil.

يحتوي Web.Config على رمز المصادقة/التفويض التالي:

<authentication mode="Windows"/>
<authorization>
    <deny users="?"/>
</authorization>

وأنا أستخدم المستخدم التالي على صفحة viewpage.aspx:

UsersService us = new UsersService();
TList<Users> currUser = us.Find("Ntid = '" + User.Identity.Name + "'");
int userID = 0;
if (currUser.Count != 0 )
{
    userID = currUser[0];
}

واستخدم هذا المستخدم للتحقق من الوصول وما شابه. إذا كان userId == 0 يحصلون على الوصول إلى القراءة فقط (وهو ما أعتقد أنه سيعطي المستخدمين قراءة القراءة بدلاً من 401 أخطاء إذا تم إرجاع user.identity.name فارغ). أفعل نفس المستخدم فحص صفحة أخرى وليس لدى المستخدمين أي مشاكل في الوصول إليها.

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

هل كانت مفيدة؟

المحلول

من رمز الخروج من العملية ، يبدو أن نوعًا من العودية يحدث ولا يتم الاسترخاء أبدًا. هناك مقال رائع للمدهش تيس فيرانديز وهذا ما يفسر كيفية تصحيح مثل هذه القضية:

A .NET Crash: كيف لا تكتب معالج استثناء عالمي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top