كيفية استخدام خدمة WCF مع HTTP GET (داخل Visual Studio 2010)
-
28-09-2019 - |
سؤال
لقد حاولنا استخدام خدمة WCF بسيطة للغاية مع الحصول على HTTP ولا يمكننا الحصول عليها. لقد تابعنا تلك "الدليل" لكنها لا تعمل
- http://msdn.microsoft.com/en-us/library/bb412178.aspx
- http://www.dotnetfunda.com/articles/article779-simple-5-steps-to-expose-wcf-services-using-rest-style-.aspx
عندما ندعو خدمتنا بعنوان URL التالي ، نحصل على خطأ في صفحة لم يتم العثور عليها:
يعمل عنوان URL الأساسي (http: // localhost: 9999/service1.svc) بشكل جيد ويعيد صفحة معلومات خدمة WCF بشكل صحيح.
هذه هي الخطوات والرمز لإعادة إنتاج مثالنا.
- في Visual Studio 2010 ، قم بإنشاء مشروع جديد "تطبيق خدمة WCF"
استبدل واجهة iservice بهذا الرمز
[ServiceContract()] public interface IService1 { [OperationContract()] [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetData/{value}")] string GetData(string value); }
استبدل فئة الخدمة بهذا الرمز
public class Service1 : IService1 { public string GetData(string value) { return string.Format("You entered: {0}", value); } }
يبدو 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>
- اضغط على 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 لهذا العمل.