2011-08-29 41 views
2

我想uplode大型圖片(超過16KB)到數據庫中。(我成功的小圖片) 我在所有已經改變了的MaxArrayLength到2147483647(默認是16384)找到它。 但我仍debbuging後收到此錯誤信息:上傳圖片超過16KB VS2010 C#asp.net

格式化拋出一個異常,而試圖反序列化消息:嘗試反序列化參數http://tempuri.org/:PicToAdd時出錯。 InnerException消息是'反序列化BL.BE.Picture類型的對象時發生錯誤。讀取XML數據時,超出了最大數組長度限額(16384)。可以通過更改創建XML閱讀器時使用的XmlDictionaryReaderQuotas對象的MaxArrayLength屬性來增加此配額。 1號線,41545號位置。'。請參閱的InnerException更多細節 源代碼:

Line 218:  public string BLS_AddPicture(BL.BE.Picture PicToAdd) { 
Line 219:   **return base.Channel.BLS_AddPicture(PicToAdd);** 
Line 220:  } 

我能做些什麼來解決它儘可能快! 謝謝

+0

什麼'innerException'財產說?你如何上傳文件 - 是否有任何地方涉及Web服務?如果是的話,什麼樣的實施 - 基於WCF或ASMX? – VinayC

+0

內exepsion爲空,但在錯誤有它。我的報價使用Web服務 – ves

+0

在基於WCF – ves

回答

0

您必須在您的WCF配置中更改設置XmlDictionaryReaderQuotas.MaxArrayLength。

你可以做到這一點的配置文件:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding ...> 
       <readerQuotas maxDepth="32" 
           maxStringContentLength="8192" 
           maxArrayLength="16384" 
           maxBytesPerRead="4096" 
           maxNameTableCharCount="16384" /> 

或代碼:

XmlDictionaryReaderQuotas lOQuotas = new XmlDictionaryReaderQuotas() 
      { 
        MaxArrayLength = Int32.MaxValue, 
        MaxBytesPerRead = Int32.MaxValue, 
        MaxDepth = Int32.MaxValue, 
        MaxNameTableCharCount = Int32.MaxValue, 
        MaxStringContentLength = Int32.MaxValue 
      }; 

myBinding.ReaderQuotas = lOQuotas; 
+0

我已經做了第一種可能性加成我的web服務。它並沒有幫助這是在我的web config- \t \t \t \t \t \t \t \t \t <結合---- \t \t \t \t \t - – ves

+0

關於您的第二個可能性:我需要添加它(哪個文件和哪個標籤? – ves

+0

您必須在兩側(服務器和客戶端)更改它!第二個選項是C#co de - 沒有「標籤」。你也必須在你的wcf頻道的服務器和客戶端上進行。你可以把代碼放在你設置你的wcf頻道的地方。 – Jan