سؤال

لدي تطبيق باستخدام WCF على جانب العميل والخادم. أحصل على أخطاء عندما أعيد كمية كبيرة من البيانات:

كان هناك خطأ أثناء محاولة تسلسل المعلمة http://tempuri.org/:GetCurrentDatabaseObjectSress. كانت رسالة innerexception هي "الحد الأقصى لعدد العناصر التي يمكن التسلسل أو التسلسل في رسم بياني كائن هو" 65535 ". قم بتغيير الرسم البياني للكائن أو زيادة حصة MaxItemSinObjectGraph. '. يرجى الاطلاع على innerexception لمزيد من التفاصيل.

(الشيء المهم الرئيسي هو أن علي زيادة MaxItemSinobjectGraph).

لقد وجدت هذا المقال هنا: كيف يمكنني تعيين خاصية MaxItemSinObjectGraph برمجياً من تطبيق Silverlight؟ ولكن يبدو أن هذا هو فقط لجانب العميل وأحتاج إلى القيام بذلك على الخادم.

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

المحلول

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/specify-data-transfer-in-service-contracts#controlling-the-serialization-process

انتقل إلى عنوان "التحكم في عملية التسلسل" (أو ابحث عن MaxItemSinobjectGraph)

نصائح أخرى

في الكود:

foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
{
    DataContractSerializerOperationBehavior dataContractBehavior =
                op.Behaviors.Find<DataContractSerializerOperationBehavior>()
                as DataContractSerializerOperationBehavior;
    if (dataContractBehavior != null)
    {
        dataContractBehavior.MaxItemsInObjectGraph = 100000;
    }
}

في التكوين:

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaivor">
      <serviceAuthorization impersonateCallerForAllOperations="True" />
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceThrottling maxConcurrentCalls="2147483647" />
      <dataContractSerializer maxItemsInObjectGraph="65775" />
    </behavior>
  </serviceBehaviors>
</behaviors>

تريد تحديد الخاصية في سمة ServiceBehavior.

 [ServiceContract]
 [ServiceBehavior(MaxItemsInObjectGraph=100000)] 
public interface IDataService 
{
   [OperationContract] 
   DataPoint[] GetData(); 
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top