可怕的WCF BAD請求400上帝你不只是喜歡WCF。由於maxReceivedMessageSize仍然是65536
我閱讀所有可能的線程,但我現在真的卡住了。
這裏是WCF配置:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BaseHttp"
maxBufferSize="4194304"
maxBufferPoolSize="4194304"
maxReceivedMessageSize="4194304" />
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="TaskServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="TaskServiceBehavior" name="TaskService">
<endpoint
address="http://www.mysite.com/TableTaskService/TableTaskService.svc"
binding="basicHttpBinding" bindingConfiguration="BaseHttp"
contract="TableTaskService.ITableTaskService" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://www.mysite.com/TableTaskService/" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://www.mysite.com/" />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
</system.serviceModel>
現在我發送消息並拋出這個默認的異常(在svclog文件SAW):
的最大郵件大小配額傳入消息(65536 )已經超過 。要增加配額,請在適當的綁定元素上使用MaxReceivedMessageSize 屬性。
現在我明確指出它應該是4mb。
我的客戶端代碼:
TableTaskServiceClient client =
new TableTaskServiceClient(
new BasicHttpBinding { MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304 },
new EndpointAddress(GetEndpointAddressString())
);
然而,它在我拋出這個65536尺寸誤差。它來自哪裏?..
也真的很重要客戶端設置MaxReceivedMessageSize
與服務器的值相同嗎?我認爲服務器負責確定長度而不是客戶端是合乎邏輯的。
還有一個警告(注意它的用處是什麼,它是什麼意思,沒有關於被覆蓋的元素的信息,或者我錯過了什麼),也許basichttpbinding正是被覆蓋的東西?但爲什麼會這樣呢?無論如何:
[TraceRecord]嚴重性警告 TraceIdentifier http://msdn.microsoft.com/en-US/library/System.ServiceModel.OverridingDuplicateConfigurationKey.aspx 說明配置系統檢測到一個 不同的配置範圍重複的鍵,並且與更近 值重寫。 的AppDomain/LM/W3SVC/11/ROOT/TableTaskService-33-1296567 源System.ServiceModel.Configuration.ServiceBehaviorElementCollection/-851144413 的ElementName行爲OldElementLineNumber 0 NewElementLineNumber 0
UPDTE: 重新配置既服務和客戶端:
TableTaskServiceClient client = new TableTaskServiceClient(
new BasicHttpBinding {
MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304,
MaxBufferPoolSize=4194304,
ReaderQuotas = new XmlDictionaryReaderQuotas
{
MaxArrayLength = 4194304,
MaxBytesPerRead = 4194304,
MaxDepth = 4194304,
MaxNameTableCharCount = 4194304,
MaxStringContentLength = 4194304
}
}, new EndpointAddress(GetEndpointAddressString()));
同樣的錯誤仍然存在。
如果是這樣的一些利益,我送的467000一個byte []數組〜長度
同樣的錯誤。我確認了幾次,這個配置用於服務配置(改爲BaseHttp1,看到錯誤,改回來了,服務在瀏覽器中工作正常),但仍然一樣。我相信它應該工作..但它沒有。 –
您是否正在配置服務和客戶端?因爲我敢打賭,客戶端也有一個上限設置。 –
是重新配置這兩個地方。 –