WCF通訊位元組大小的問題,下班後四十分鐘總算搞定了。

來源:互聯網
上載者:User

今天遇到兩個問題,一個主要問題,一個次要問題。

 

主要問題:上傳下載大點的資料檔案,WCF用預設配置不能正常的序列化和還原序列化。

運行WCF,上傳13K的XML資料出錯。錯誤如下:

格式化程式嘗試對訊息還原序列化時引發異常,對操作"SetFigureData"的請求訊息本文進行還原序列化時出現錯誤。讀取XML資料時,超出最大字串內容長度配額(8192)。通過更改在建立XML讀取器時所使用的XmlDictionaryReaderQuotas對象的MaxStringContentLenght屬性,可增加此配額。第156行,位置為48。

 

解決辦法,有位園友寫到了,可以參考如下:

http://www.cnblogs.com/upzone/archive/2009/01/20/1378655.html

大致思路:上傳不行,就看伺服器端的App.config;下載不行,就看用戶端的App.config。我沒從這出發,我在做上傳的時候,老拘泥於用戶端的App.config檔案,其實早配對了,還是報錯,出錯原因是在伺服器端的App.config中,沒配置,就是用預設的設定了。當然,網上還有個人,說去改machine.config檔案,更是小題大作,把問題想遠了。我們都知道machine.config是根,不應該隨便動的,應該專事專辦。

我再補充下,WCF產生的檔案App.config檔案,是不包含bindings節點的。(就為這個,浪費我40分鐘時間,我把下面兩部分沒當成在一個檔案裡,但是切記它們實際是在一個檔案裡。)

<bindings>
  <wsHttpBinding>
    <binding name="NewBinding2" maxReceivedMessageSize="67108864">
      <readerQuotas maxStringContentLength="67108864"/>
      <security mode="None" />
    </binding>
  </wsHttpBinding>
</bindings>

<service behaviorConfiguration="DomainWS.DomainServiceV2Behavior"
      name="DomainWS.DomainServiceV2">
  <endpoint address="" binding="wsHttpBinding" bindingConfiguration="NewBinding2" contract="DomainWS.IDomainV2">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>

 

次要問題:

在解決上述問題的時候,引入的另一個問題,嘗試按MSDN部落格上一個人的方法,修改用戶端的App.config,結果用戶端的Binding方式變了,從wsHttpBinding改為basicHttpBinding,卻忘了改伺服器的Binding方式,還是用的wsHttpBinding。當然對不上號了,一運行如下錯誤出現:

服務 http: 不支援內容類型 text/xml; charset=utf-8。用戶端和服務綁定可能不匹配。

 

按關鍵字一搜,就找到類似問題了。不過那個樓主在看到真正的答案的時候,好像也沒意識到。哎,可惜了。

 

 總結來說,分析問題的能力很重要,老外管它叫“Trouble Shooting Ability”。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.