سؤال

لدي هذا الرمز:

using ( var site = new SPSite( myUrl ) ) {
    using ( var web = site.AllWebs[0] ) {
        // read-only operations
    }
}

"myUrl" هو عنوان URL للمجال العلوي مع WSS 3.0.تم تعيين المصادقة على Windows.إذا قمت بتشغيل هذا الرمز من سطر الأوامر ضمن حساب "external_app_user"، فكل شيء على ما يرام.ولكن إذا قمت بتشغيل هذا الرمز من خدمة الويب (خارج تطبيق الويب WSS)، فستكون النتيجة استجابة http "401 غير مصرح به" بدلاً من استجابة SOAP.إنه أمر غريب، لأن هذا الرمز موجود في كتلة "محاولة الالتقاط"، وإذا تم طرح أي استثناء، فقد قمت بإرجاع رسالة خطأ خاصة في استجابة SOAP.

يتم تشغيل الكود على نفس الجهاز مثل WSS.

إذا قمت بتشغيل خدمة الويب من webbroser على الجهاز الذي يتم تشغيل خدمة الويب عليه، فسيتم عرض نموذج تسجيل الدخول الكلاسيكي إلى Windows.إذا قمت بتشغيل خدمة الويب من متصفح الويب على كمبيوتر آخر، أحصل فقط على استجابة http "401 غير مصرح بها".

خدمة الويب تعمل تحت الحساب الصحيح.يتمتع هذا الحساب بإمكانية الوصول إلى WSS (تم اختباره عبر موقع ويب Sharepoint).إذا حاولت الحصول على "System.Security.Principal.WindowsIdentity.GetCurrent().Name" فسيتم إرجاع اسم المستخدم الصحيح.

في web.config تم تعيين "<identity impersonate="true" userName="_my_username_" كلمة المرور = "_my_password_" />.

أي شخص لديه فكرة ما هو الخطأ؟

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

المحلول 3

نصائح أخرى

والسبب لا يمكن القبض على 401 لأن شير تمت معالجة مخصصة لهذا الاستثناء، انظر هذا الموضوع: <لأ href = "https://stackoverflow.com/questions/724679/cannot-catch-the-sharepoint- وصول نفى الخطأ "> لا يمكن التقاط نفى شير الوصول خطأ (بما في ذلك اقتراح كيفية إيقاف تشغيله).

هل يمكن أن تحقق في IIS إذا ما سمح لكلا مجهول ومصادقة Windows. ثم أنه قد يكون مما يسمح لك من خلال المجهول كما، بدلا من قراءة النوافذ هويتك، الأمر الذي يؤدي إلى وقت لاحق غير مصرح بها.

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