Wer im BizTalk einen WCF-Service über einen SendPort anspricht und zum Beispiel eine 10MB große XML-Datei darüber senden möchte, der erhält ggf. die Fehlermeldung
The adapter failed to transmit message going to send port “TestPortToDatabase” with URL “http://localhost/ImporterService/Import.svc”. It will be retransmitted after the retry interval specified for this Send Port. Details:”System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (413) Request Entity Too Large. —> System.Net.WebException: The remote server returned an error: (413) Request Entity Too Large.
Das bedeutet, dass die Datei in unserem Fall zu groß ist. Denn der Defaultwert von maxReceivedMessageSize beträgt 65536, was deutlich zu klein ist.
Hier die komplette Fehlermeldung:
The adapter failed to transmit message going to send port "TestPortToDatabase" with URL "http://localhost/ImporterService/Import.svc". It will be retransmitted after the retry interval specified for this Send Port. Details:"System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (413) Request Entity Too Large. ---> System.Net.WebException: The remote server returned an error: (413) Request Entity Too Large. at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result) --- End of inner exception stack trace --- Server stack trace: at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result) at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient2.RequestCallback(IAsyncResult result)".
In der Web.config Datei des Webservices sollte dann folgendes mit eingefügt werden.
<configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="Binding1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" > <security mode="None" /> </binding> </basicHttpBinding> </bindings> </system.serviceModel> </configuration
Somit wird die Dateigrößenbeschränkung durch die erhöhte “maxBufferSize” und die “maxReceivedMessageSize” von 2147483647 byte sozusagen umgangen.