هل هناك قيود معروفة مع تطبيق عميل اختبار WCF؟

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

  •  05-09-2019
  •  | 
  •  

سؤال

لقد حدث هذا عدة مرات معي. إذا أضفت إلى العديد من المتعاقد إلى ServiceConactract، فإن تطبيق عميل اختبار WCF يلقي استثناء:

"فشل في إضافة خدمة. قد لا يمكن الوصول إلى خدمة البيانات الوصفية. تأكد من أن خدمتك تعمل وتكشف عن البيانات الوصفية".

في التفاصيل التي يستمرها:

خطأ: لا يمكن الحصول على بيانات التعريف من. فشل الطلب مع حالة HTTP 400: طلب سيء.

إذا قمت بإزالة اثنين من عقود التشغيل، فكل شيء على ما يرام. خارج عميل الاختبار جيد أيضا.

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

المحلول 2

شكرا على الردود.

كانت هذه الخطوط المخالفة:

<OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
Function GetJobSubTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of JobSubTypeOfJobTypeDTO)

<OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
Function GetActivityTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of ActivityTypeOfJobTypeDTO)

اتضح أننا كنا نفتقد setters في أنواع العودة (DTO) ومنشئ افتراضي.

نصائح أخرى

هل يمكن أن تكون أكثر تحديدا حول أنواع العمليات التي يجب إزالتها من عقد الخدمة لجعلها تعمل؟

هنا بعض القيود المعروفة في wcftestclient.exe. الأداة التي تأتي مع .NET Framework 3.5 SDK. لاحظ أنه تم إصلاح كل هذه المشكلات في الإصدار الذي يأتي مع .NET 3.5 SP1.

  • العميل لا يحتفظ جلسة مع الخدمة المستدقة. يتم إجراء جميع المكالمات على مثيلات وكيل جديدة
  • الناتج تلقائيا ملف الضبط لوكيل العميل يمكن عرضه ولكن لم يتم تحريره
  • الخدمات باستخدام XML Serializer. بدلا من عدم استدعاء تسلسل عقد البيانات
  • الخدمات باستخدام عقود الرسائل لا يمكن استدعاءها

هذا هو واحد من أغرب المشاكل التي صادفتها. قد تضطر إلى مراجعة التعليمات البرمجية وتنظر إلى مشاكل مثل:

Private _NetPay As Boolean
<DataMember()> _
Public Property NetPay() As Boolean
    Get
        Return _Amount = 0
    End Get
    Set(ByVal value As Boolean)
        _NetPay = value
    End Set
End Property

كنت قد حددت Datamember على النحو الوارد أعلاه. لاحظ إكمال العودة. يحاول إرجاع قيمة محسوبة. قمت بإزالة عضو البيانات هذا؛ عملت بشكل جيد.

هذا ما كان علي إضافته إلى Devenv.exe.config من أجل الحصول على عميل اختبار WCF الخاص بي للعمل مع خدمة كبيرة جدا. ثم اضطررت لإعادة تشغيل IDE. قد لا يكون هذا ما تبحث عنه، لكنني آمل أن يساعد ذلك.

<system.serviceModel>
  <bindings>
    <customBinding>
      <binding name="MyBinding">
        <textMessageEncoding>
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
        </textMessageEncoding>
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
      </binding>
    </customBinding>
  </bindings>
  <client>
    <endpoint binding="customBinding" bindingConfiguration="MyBinding" contract="IMetadataExchange" name="http"/>
  </client>
</system.serviceModel>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top