2016-07-14 95 views
0

我有一個wcf服務,過去一直由客戶端使用。wcf綁定 - 服務和客戶端不匹配

客戶端和服務都使用basicHttpBinding,其中不存在其他設置。

我現在有一個新客戶端調用大量數據的服務,導致客戶端出現異常,因爲它超過了默認的65536大小。

所以我添加maxReceivedMessageSize許多答案的建議對這個問題

<bindings> 
    <basicHttpBinding> 
     <binding 
      name="Service1BasicHttpBinding" 
      maxReceivedMessageSize="6024800" 
      maxBufferPoolSize="6024800"> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

將其加入到這兩個服務端和客戶端, 服務:

<services> 
    <service name="MyService" > 
     <endpoint 
      binding="basicHttpBinding" 
      bindingConfiguration="Service1BasicHttpBinding" 
      contract="MyServiceContract" /> 
    </service> 
</services> 

客戶:

<client> 
    <endpoint 
     address="http:myendpoint" 
     binding="basicHttpBinding" 
     bindingConfiguration="Service1BasicHttpBinding" 
     contract="MyServiceContract" 
      name="MyService" /> 
</client> 

而且一切正常。 我的問題是我有不是更新我的其他客戶端具有相同的綁定和bindingConfiguration(Service1BasicHttpBinding),它仍然工作。 這爲什麼有效? 我無法找到任何地方說客戶端和服務器將工作,如果綁定是不同的,我都困惑和好奇,爲什麼它工作

回答

0

因爲您更新的設置是特定於客戶端,並且對服務沒有意義(反之亦然)。

儘管綁定協議和安全設置需要在服務和客戶端之間進行匹配,但超時,最大接收郵件大小,讀取器配額等內容都是特定於擁有配置文件的應用程序所在的位置。

換句話說,客戶可能會說「我可以除了6024800大的消息」,並且服務不關心。現在,如果客戶端嘗試發送向服務發送的消息大於服務接受的消息,則會出現錯誤。

相關問題