سؤال

ما هو الحد الأدنى الذي أحتاج إلى وضعه في web.config حتى يعمل WCF مع REST؟لقد قمت بتعليق أساليبي باستخدام [WebGet]، لكنهم لم يتلقوا الرسالة.

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

المحلول

لقد اكتشفت أنه يمكنك إضافة ما يلي إلى توجيه ServiceHost في ملف *.svc، وسيقوم تلقائيًا بإعداد WebHttpBinding وWebHttpBehavior لك:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

لاحظ أن مساحة الاسم تختلف قليلاً عما هو مذكور في أي مكان آخر على الويب (كما هو الحال في مقالة MSDN هذه).

بعد القيام بذلك، تمكنت من حذف القسم بأكمله من web.config ولا يزال كل شيء يعمل!

نصائح أخرى

تأكد من أنك تستخدم webHttpBinding على نقطة النهاية الخاصة بك (وليس httpBinding أو wsHttpBinding).هذا هو تكوين نقطة النهاية الخاصة بي ...

    <endpoint address="" binding="webHttpBinding" bindingConfiguration=""
      contract="WcfCore.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

يجب عليك التأكد من أن لديك عنوانًا لمضيف الخدمة الخاص بك، على سبيل المثال

<services>
      <service name="SomeLib.SomeService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/somebase"/>
          </baseAddresses>
        </host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->

        <endpoint 
                   address="basic"
                   binding="basicHttpBinding"
                   contract="SomeLib.SomeContract"/>
</service>
</services>

والآن، إذا كنت تستضيف نفسك عبر تطبيق وحدة تحكم على سبيل المثال... فيمكنك استدعاء مضيفك عبر:

WebChannelFactory<IServiceContract> factory =
        new WebChannelFactory<IServiceContract>(
            new Uri("http://localhost:8080/somebase"));

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

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

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