كيف يمكنني تصحيح خطأ "مزود العضوية الافتراضي" لا يمكن العثور عليه "مع WCF ومزود عضوية ASP.NET المخصص؟

StackOverflow https://stackoverflow.com/questions/2325688

سؤال

هذه مشكلة بالنسبة لي مع .NET 3.5 SP1 تشغيل على IIS7.5 64 بت (حاولت فرض 32 بت لكنني حصلت على نفس النتيجة).

لدي خدمة WCF التي أريد استخدامها لخدمات المصادقة. عندما لا يكون لدي أي سلوك ، فإن دهانات خدمة WCF (ردود) دون أي خطأ. تعمل الخدمات الأخرى أيضًا مع سلوكيات أخرى

بمجرد إضافة UsernameaUffication إلى السلوك الذي يحدد عضوية مخصصة للمصادقة على خدمة ...

  <serviceCredentials>
    <!-- Configure user name authentication to use the Membership Provider -->
    <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider"
                            membershipProviderName ="MembershipService"/>
  </serviceCredentials>

الخدمة تنفجر وإرجاع الخطأ التالي:

 Parser Error Message: Default Membership Provider could not be found.
 Source Error: 
 Line 49:     </authentication>
 Line 50:     
 Line 51:     <membership defaultProvider="MembershipService" userIsOnlineTimeWindow="15">
 Line 52:       <providers>
 Line 53:         <clear/>

سجل الأحداث يحتوي على هذا الخطأ:

 WebHost failed to process a request.
 Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/59884855
 Exception: System.ServiceModel.ServiceActivationException: The service '/V4Service.svc' cannot be activated due to an exception during compilation.  The exception message is: Default Membership Provider could not be found. (C:\Code\SmartTrade Projects\SmartTrade.API\Web\SmartTrade.API\web.config line 50). ---> System.Configuration.ConfigurationErrorsException: Default Membership Provider could not be found. (C:\Code\SmartTrade Projects\SmartTrade.API\Web\SmartTrade.API\web.config line 50)
 at System.Web.Security.Membership.Initialize()
 at System.Web.Security.Membership.get_Providers()
 at System.ServiceModel.Configuration.UserNameServiceElement.ApplyConfiguration(UserNamePasswordServiceCredential userName)
 at System.ServiceModel.Configuration.ServiceCredentialsElement.ApplyConfiguration(ServiceCredentials behavior)
 at System.ServiceModel.Configuration.ServiceCredentialsElement.CreateBehavior()
 at System.ServiceModel.Description.ConfigLoader.LoadBehaviors[T](ServiceModelExtensionCollectionElement`1 behaviorElement, KeyedByTypeCollection`1 behaviors, Boolean commonBehaviors)
 at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress)
 at System.ServiceModel.ServiceHostBase.ApplyConfiguration()
 at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
 at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
 at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
 at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
 at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
 at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
 at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)

أنا متأكد من أن هذه ليست مشكلة في تكوين الموفر أو المزود لأن لدي هذا المزود المخصص يعمل مع موقع ASP MVC.

أي أفكار؟

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

المحلول

لقد بدأت تطبيق مخصص جديد من الصفر لضمان عودة جميع التجاوزات بشكل صحيح. بلدي الأصلي الذي اعتقدت أنه كان يعمل (كان ذلك قبل شهرين) واتضح أنه لم يعد يعمل.

اتضح إذا كان لديك اسم المزود صحيح والنوع الصحيح في التكوين الذي يترك فقط تطبيق مخصصك المخصص.

لذلك إذا كان لديك هذه المشكلة وكنت متأكدًا من أن التكوين الخاص بك صحيح ، فتأكد من تطبيقك باستخدام موقع ASP.NET أو ASP.NET MVC بسيط.

نصائح أخرى

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

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

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

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