سؤال

أحاول استضافة خدمة ويب WCF وتقديم نقطة نهاية HTTP بدعم AJAX. كل ما وجدته حول WCF و Ajax يتحدثان عن IIS ، وهو ما لا أريد استخدامه.

لقد قمت بإنشاء تطبيق وحدة تحكم بسيط لاستضافة الخدمة. خدمتي لديها طريقة واحدة فقط:

[ServiceContract]
interface IMyService
{
    [OperationContract]
    string TestConnection();
}

وهنا رمز App.Config:

<services>
  <service name="Service.MyService" behaviorConfiguration="MyServiceBehavior" >
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="Service.IMyService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

<behaviors>
  <endpointBehaviors>
    <behavior name="WebBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior" >
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

يمكنني الوصول إلى نقطة نهاية البيانات الوصفية للخدمة ورؤية WSDL ، لكنني غير قادر على استخدامها من عميل Ajax الخاص بي. لذا سؤالي هو: 1. هل من الممكن القيام بذلك؟ 2. ما هو التكوين المطلوب الذي أفتقده من الواضح؟

ملاحظة أنا لا أستخدم ملف .svc

شكرًا!

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

المحلول

ما هو عميلك؟ باستخدام EnableWebscript ، يمكنك الحصول على دعم ASP.NET AJAX (على سبيل المثال ، الأعضاء المزينة ، والأنواع ، وجميع goo التي تعنيها). إذا كنت تريد "RAW" JSON ، فاستخدم سلوك WebHTTP بدلاً من EnableWebscript ، ووضع علامة على عمليات الواجهة الخاصة بك باستخدام WebInVokeAttribute أو WebGetAttribute (قم بتعيين أنواع الطلب/الاستجابة على JSON أو XML كما تريد). يبدو أيضًا أنك لم تعزى واجهتك باستخدام ServiceContractAttribute ، وهو أمر مطلوب.

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