WCF استضافة ذاتي لعميل AJAX
-
22-09-2019 - |
سؤال
أحاول استضافة خدمة ويب 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 ، وهو أمر مطلوب.