Il server remoto ha restituito una risposta imprevista: (413) Entità richiesta troppo grande.

Sto cercando di creare un servizio di applicazione WCF, utilizzando FW4.0. Il mio servizio funziona correttamente durante il trasferimento dell’object EntiryFramework tra Server e client. Ma sto avendo problemi a passare l’object EF da Client a Server.

Ecco alcuni dettagli sul mio ambiente: – Il servizio è in esecuzione in modalità di debug localmente su IIS – Sto eseguendo tutto questo su Windows 7 – Sto usando Visual Studio 2010 su FW4.0

Sto cercando di inviare un object (tblClient) al server per salvare il record, ma un keep che ha l’errore (413) Request Entity Too Large. Qui lo stack completo:

System.ServiceModel.ProtocolException occurred HResult=-2146233087 Message=The remote server returned an unexpected response: (413) Request Entity Too Large. Source=mscorlib StackTrace: Server stack trace: at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 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]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at ClientApp.ServiceReference1.IService.SaveClient(tblClient client) at ClientApp.ServiceReference1.ServiceClient.SaveClient(tblClient client) in C:\dufh\WPF Project\ClientApp\Service References\ServiceReference1\Reference.vb:line 2383 at ClientApp.ViewModel.ClientViewModel.SaveClient() in C:\dufh\WPF Project\ClientApp\ViewModel\ClientViewModel.vb:line 48 InnerException: System.Net.WebException HResult=-2146233079 Message=The remote server returned an error: (413) Request Entity Too Large. Source=System StackTrace: at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) InnerException: 

Ho fatto qualche ricerca e tutto punta a maxBufferSize e / o maxBufferPoolSize e / o maxReceivedMessageSize witch non è abbastanza grande nella configurazione del client App.Config. Quindi li ho analizzati al valore massimo: maxBufferSize = “2147483647” maxBufferPoolSize = “2147483647” maxReceivedMessageSize = “2147483647” Ma l’errore rimane comunque.

Qui il mio client completo App.Config

          <!---->                        

e il completo Web.Config servizio WCF Web.Config

                                 Any help would be very welcome :-) 

Per il record

Penso di aver capito. Il Web.Config dal servizio non ha le informazioni vincolanti. Ho inserito queste informazioni e voilà!

        

Nota qui che l’associazione non ha un nome specificato.

Non si dispone di un endpoint esplicito (ovvero definito nel file di configurazione) per il proprio servizio, quindi la configurazione di binding dichiarata (“BasicHttpBinding_IService”) non viene utilizzata. WCF fornisce un endpoint predefinito insieme a un basicHttpBinding predefinito ( basicHttpBinding meno che non lo si basicHttpBinding nella sezione protocolMapping del file di configurazione).

Hai due modi per risolvere questo problema nel file di configurazione del tuo servizio:

È ansible rendere predefinita la configurazione “BasicHttpBinding_IService” rimuovendo l’attributo name :

  

Oppure si definisce un endpoint esplicitamente nella configurazione e si assegna la configurazione di bindingConfiguration all'attributo bindingConfiguration dell'endpoint.

    

Se si crea un binding personalizzato, ad es. MybasicBinding,

       

Per evitare l’errore 413, non forzare a Specificare il bindingConfiguration = “MybasicBinding” per l’ endpoint del servizio come,

  

Un altro modo per risolvere questo problema e avere una visione migliore del file web.config è modificare il file web.config con “Microsoft Service Configuration Editor” (C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Strumenti \ SvcConfigEditor.exe)

se non viene specificato alcun legame e httpsgetenabled è true, potrebbe essere necessario impostare basichttpsbinding nel web.config dell’applicazione di servizio