كيفية استخدام خدمة WCF مع HTTP GET (داخل Visual Studio 2010)

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

  •  28-09-2019
  •  | 
  •  

سؤال

لقد حاولنا استخدام خدمة WCF بسيطة للغاية مع الحصول على HTTP ولا يمكننا الحصول عليها. لقد تابعنا تلك "الدليل" لكنها لا تعمل

عندما ندعو خدمتنا بعنوان URL التالي ، نحصل على خطأ في صفحة لم يتم العثور عليها:

http: // localhost: 9999/service1.svc/getData/ABC

يعمل عنوان URL الأساسي (http: // localhost: 9999/service1.svc) بشكل جيد ويعيد صفحة معلومات خدمة WCF بشكل صحيح.

هذه هي الخطوات والرمز لإعادة إنتاج مثالنا.

  1. في Visual Studio 2010 ، قم بإنشاء مشروع جديد "تطبيق خدمة WCF"
  2. استبدل واجهة iservice بهذا الرمز

      [ServiceContract()]
      public interface IService1
      {
          [OperationContract()]
          [WebInvoke(Method = "GET", 
                     BodyStyle = WebMessageBodyStyle.Bare, 
                     UriTemplate = "GetData/{value}")]
          string GetData(string value);
      }
    
  3. استبدل فئة الخدمة بهذا الرمز

    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
    
  4. يبدو web.config هكذا

    <system.web>
       <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <services>
          <service name="Service1">
              <endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1">
              </endpoint>
          </service>
      </services>
      <behaviors>
          <endpointBehaviors>
              <behavior name="WebBehavior1">
                 <webHttp helpEnabled="True"/>
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
    

  5. اضغط على RUN وحاول الاتصال بالطريقة GET

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

شكرا جزيلا لك

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

المحلول

قمت بإعادة إنشاء نموذجك - يعمل مثل السحر.

نقطة واحدة: هل عقد الخدمة الخاص بك (public interface IService1) وتنفيذ الخدمة (public class Service1 : IService1) موجودة داخل مساحة الاسم .NET ؟؟

إذا كان الأمر كذلك ، فأنت بحاجة إلى تغيير *.svc و web.config لكي يتضمن:

<services>
      <service name="Namespace.Service1">
          <endpoint address="" binding="webHttpBinding" 
                    contract="Namespace.IService1" 
                    behaviorConfiguration="WebBehavior1">
          </endpoint>
      </service>
  </services>

ال <service name="..."> السمة و <endpoint contract="..."> يجب أن تشمل مساحة الاسم .NET لهذا العمل.

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