When I call a WCF service I get an exception:
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
When I use Wireshark packet analyzer filter on http the larges packet sent is 1226 bytes, which is way bellow the limit of 65536 bytes. Any suggestions to why this exception is thrown?
Protocol-Length-Info
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
...
<binding
name="WSHttpBinding_IService"
closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas
maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession
ordered="true"
inactivityTimeout="00:10:00"
enabled="false" />
<security
mode="Message">
<transport
clientCredentialType="Windows"
proxyCredentialType="None"
realm="" />
<message
clientCredentialType="Certificate"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
Code that I suspect causes the exception:
public LoanPlan CalculateLoanPlans(string productName)
{
var loanPlan = new LoanPlan
{
Details = new[]
{
new PlanDetails {LoanAmount = 5000, Periods = 6},
new PlanDetails {LoanAmount = 5000, Periods = 12},
new PlanDetails {LoanAmount = 5000, Periods = 24},
new PlanDetails {LoanAmount = 10000, Periods = 6},
new PlanDetails {LoanAmount = 10000, Periods = 12},
new PlanDetails {LoanAmount = 10000, Periods = 24},
new PlanDetails {LoanAmount = 15000, Periods = 6},
new PlanDetails {LoanAmount = 15000, Periods = 12},
new PlanDetails {LoanAmount = 15000, Periods = 24},
new PlanDetails {LoanAmount = 20000, Periods = 6},
new PlanDetails {LoanAmount = 20000, Periods = 12},
new PlanDetails {LoanAmount = 20000, Periods = 24},
new PlanDetails {LoanAmount = 30000, Periods = 6},
new PlanDetails {LoanAmount = 30000, Periods = 12},
new PlanDetails {LoanAmount = 30000, Periods = 24},
new PlanDetails {LoanAmount = 40000, Periods = 6},
new PlanDetails {LoanAmount = 40000, Periods = 12},
new PlanDetails {LoanAmount = 40000, Periods = 24},
new PlanDetails {LoanAmount = 50000, Periods = 6},
new PlanDetails {LoanAmount = 50000, Periods = 12},
new PlanDetails {LoanAmount = 50000, Periods = 24}
},
TaxProcent = _taxPercent,
};
Parallel.ForEach(loanPlan.Details, detail =>
{
var result = Calculate(productName, Convert.ToInt32(detail.LoanAmount), detail.Periods, null);
detail.ActualPaymentCost = result.ActualPaymentCost;
detail.CreditCost = result.CreditAmount;
detail.MonthlyPayment = result.MonthlyPayment;
detail.MonthlyPaymentCost = result.MonthlyPaymentCredit;
});
var firstDetail = loanPlan.Details[0];
var firstResult = Calculate(productName, Convert.ToInt32(firstDetail.LoanAmount), firstDetail.Periods, null);
loanPlan.MonthlyFee = firstResult.MonthlyFee;
loanPlan.MonthlyInterest = firstResult.MonthlyInterest;
return loanPlan;
}
The Calculate method contains the servicecall.
Increase maxStringContentLength & maxArrayLength="2147483647" on both server and client. Check the below link which explains in detail
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/f570823a-8581-45ba-8b0b-ab0c7d7fcae1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With