كيف يمكنني عرض خدمة WCF في الدليل الظاهري مع مصادقة نماذج W / O؟

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

سؤال

تقوم مجموعتي بإنشاء مواقع ASP.NET MVC مستضافة داخليا مع مصادقة أشكال.

أرغب في استضافة خدمة WCF في نفس الدليل الظاهري كموقع ASP.NET MVC.

سؤالي:

كيف يمكنني جعل خدمة WCF يمكن الوصول إليها بحرية، وهذا هو بدونأشكال مصادقة.

هكذا الحالي هو:

  • يمكنني الوصول إلى .svc وشاهد معلومات WSDL إذا قمت بالمصادقة أولا من خلال مصادقة النماذج مع متصفح الويب.
  • ولكن عندما أحاول الوصول إلى خدمة WCF باستخدام wcftestclient.exe، أحصل على الخطأ التالي:

خطأ: لا يمكن الحصول على بيانات التعريف من http: //localhost/services/myservice.svc.إذا كان هذا هو خدمة مؤسسة اتصالات Windows (R) التي يمكنك الوصول إليها، فيرجى التحقق من أن قمت بتمكين نشر البيانات الوصفية على العنوان المحدد. للمساعدة في تمكين نشر البيانات الوصفية، يرجى الرجوع إلى وثائق MSDN في http://go.microsoft.com/fwlink/؟linkid=65455.ws-metadata.خطأ تبادل

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

المحلول 3

شكرا جزيلا لجميع الذين حاولوا الإجابة على هذا السؤال.

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

أوه - والخطوط من خلال التعليمات البرمجية مُبخَس القيمة. ;)

نصائح أخرى

هل لديك mex endpoint يعرف في الويب الخاص بك على الويب الخاص بك للخدمة؟ من المحتمل أن يبحث TestClient عن هذا.

إذا قمت بذلك، فإن أحد الاحتمالات الأخرى هو تعطيل إذن في مجلد الخدمات. لم أختبر هذا أبدا، ولكن من الناحية النظرية قد تعمل ...

لذلك إذا كان الموقع localhost, ، وضع خدمة WCF في localhost/services/myservice.svc أو ما شابه ذلك. ثم أضف Web.config إلى /services المجلد، الذي يتجاوز إذن ويسمح للجميع:

<configuration>
   <authorization>
      <allow users="*" />
   </authorization>
</configuration>

إذا كنت تستطيع وضع ملف .svc الخاص بك في مجلد فرعي من الدليل الظاهري، يمكنك الاستفادة من طريق السمة في مصادقة النماذج لتمكين الوصول إليها بمستوى مختلف من التفويض. هنا هو البرنامج التعليمي.

أفترض منذ أن تستخدم مصادقة النماذج التي تم تكوين الدليل الظاهري للوصول المجهول في IIS. مع ذلك، إذا قمت بوضع خدمة WCF الخاصة بك على سبيل المثال * ملف .svc في الدليل الخاص به، يمكنك تحديث ملف Web.config الرئيسي وإضافة علامة موقع لتعطيل مصادقة النماذج للدليل الذي يحتوي على الخدمة. تأكد أيضا من تفكيا الأمان عبر إعدادات ربط تكوين WCF في Web.config's <system.servicemodel> القسم الذي يجب إضافته إن لم يكن موجودا بالفعل:

<bindings>
  <wsHttpBinding>   <!-- one of many possible bindings -->
    <binding name="...">          
      <security mode="None"> <-- allows anonymous access -->
        <message clientCredentialType="None"/> <-- allows anonymous access -->
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top