提高RIA Service結果項目上限

解問題的過程很有趣。對於不熟的事物,初看像一團迷霧,但隨著謎題一個個解開,對背後原理的了解愈來愈多,一些原本沒有頭緒的問題,忽然迎刃而解,往往自己都覺得驚喜。

還是上回的RIA Service暴斃奇案。一開始先是用土法練鋼的方法找出資料量太大會造成WCF無疾而終,接著學會了用WCF Tracing追問題,由Log挖出了一個關鍵字: MaxItemsInObjectGraph。這才理解,真正讓WCF掛掉的,並不是傳回資料太多讓總長度超出了MaxReceivedMessageSize,而是DataContractSerializer在序列化過程中,達到了RIA Service預設65536個項目的上限。

雖然依一般設計實務,多半建議使用者在瀏覽過程中,用到多少資料再傳多少資料,真正需要一口氣傳回大量資料的場合不多。但如真有需要,可在web.config加入以下設定,就可以將項目上限調到2G囉!

  <system.serviceModel>
    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    
    <!-- Set maxItemsInObjectGraph -->
    <services>
      <service name="MyNamespace.MyDomainServiceClass" 
               behaviorConfiguration="MyWCFConfig"></service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyWCFConfig">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
  </system.serviceModel>

【延伸閱讀】

歡迎推文分享:
Published 12 July 2010 04:32 PM 由 Jeffrey
Filed under: ,
Views: 8,472



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<July 2010>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication