2009-06-11 103 views
2

我有一個WCF服務正在爲基本查詢工作。我從默認開箱即裝即用(默認值爲WSHttpBinding)開始。微調WCF綁定

數據契約是一組自定義對象,每個對象的大小約爲6k。當我發送多達5個(在單個交易中)時,它可以正常工作。當我嘗試發送6個或更多時,出現此錯誤:

「遠程服務器返回錯誤:(400)錯誤的請求。」

我研究了一些綁定,並試圖在客戶端上設置的配置是這樣的:

<binding name="WSHttpBinding_IASRService" closeTimeout="00:10:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" 
     bypassProxyOnLocal="false" transactionFlow="false" 
     hostNameComparisonMode="StrongWildcard" 
     maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000" 
     messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
     allowCookies="false"> 
    <readerQuotas maxDepth="50000000" maxStringContentLength="50000000" 
       maxArrayLength="50000000" maxBytesPerRead="50000000" 
       maxNameTableCharCount="50000000" /> 
    <reliableSession ordered="true" inactivityTimeout="00:10:00" 
       enabled="false" /> 
</binding> 

我同樣設置在服務web.config文件中的配置,然而,問題仍然存在。

我也嘗試將客戶端app.config設置爲messageEncoding =「Mtom」,但是這產生了另一個綁定錯誤,說客戶端和服務器之間的綁定可能不匹配,所以我現在就把它解決了。 (儘管Mtom也是在服務器web.config中指定的。)另外,在我的研究中,我還沒有找到每個綁定屬性的簡單明瞭的描述。

總之,我試圖回答以下問題:

  1. 如何獲得更大的請求不產生壞請求錯誤
  2. 怎樣設置客戶端MTOM的,而不會產生錯誤
  3. 對每個綁定屬性是否有很好的基本參考以及如何使用它們?

回答

1

我終於想通了!

在所有的地方所以,看到this question

這解決了我的主要問題(#1)。我仍然在尋找如何配置各種綁定WCF屬性的清晰描述。我已經在網上,書籍和MSDN上的API文檔中查找過。如果有人知道某件事情真的拼出來了,請在這裏發佈。看起來WCF是相當直接的,直到你進入綁定細節。

1

對於開始調試,最好的辦法是採取一種操作方法。我會拉出Fiddler,並確保客戶端發送有效的請求。

2

這裏有一個提示,我爲你的#2深知這一點:

你做在服務器端更改WCF每次,重新編譯服務器項目,然後「更新參考」在客戶端(點擊右鍵服務參考)。

+0

這是否適用於只更改服務器端web.config文件? – alchemical 2009-06-12 19:28:02