سؤال

في مُنشئ فئة خدمة WCF الخاصة بي ، أقوم بتعيين المدير الحالي ليكون من المدير الذي تم تمريره في رأس الرسالة:

Thread.CurrentPrincipal = OperationContext.Current.IncomingMessageHeaders.GetHeader<BBPrincipal>("bbPrincipal", "ns");

يبدو أن هذا يعمل بشكل جيد ، ولكن عندما أشرت إلى الإشارة إلى المدير في طريقة ما ، عاد thind.currentprincipal إلى Windowsprincipal.

يفترض أن الطريقة تطلق النار على موضوع مختلف. كيف يمكنني التأكد من أن الطريقة تستخدم المجموعة الرئيسية في مُنشئ الخدمة؟

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

المحلول

لقد وجدت للتو الإجابة على سؤالي الأصلي. من أجل إيقاف WCF تجاوز المدير مع واحد فارغ ، قم بتعيين ما يلي في تكوين السلوك:

<serviceAuthorization principalPermissionMode="None" />

بسيط مثل هذا ولا حاجة لإجراء تغييرات شاملة على قاعدة الكود الحالية.

نرى: http://connect.microsoft.com/visualstudio/feedback/details/369445/wcf-service-configured-for-transport-security-shouldnt-change-thread-thread-currentprincipal

نصائح أخرى

يحدد WCF دائمًا مديرًا رئيسيًا في EutlizationPolicy ، لذا فمن المحتمل أن يكتب تغييراتك. يجب أن تنفذ سياسة التفويض المخصص وضبط المدير هناك.

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