Я работаю над проектом. Веб-сайт был создан на MVC, http://www.example.com, недавно другой разработчик добавил веб-службу Windows (а не WCF) к проекту, http://www.example.com/WebServices/upload.asmx. Он предназначен для загрузки изображений на сервер. Маршрут добавлен в RouteConfig, поэтому он работает:
routes.IgnoreRoute("WebServices/*/{resource}.aspx/{*pathInfo}");
Однако я заметил, что он работает для файлов небольшого размера. Когда размер файла достигает определенной точки, т.е.> 1 МБ (не уверен, что точный #, но файл с файлом 650 КБ работает и файл с ошибкой 1.1 МБ). Сообщение об ошибке:
System.ServiceModel.ProtocolException was caught
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.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 SyncDatabase.eyephoto.com.upload.UploadSoap.UploadImage(UploadImageRequest request)
....
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:
Я искал 2 дня, все решения, которые я мог найти, не сработали. Теперь, на сайте, в web.config, у меня есть:
<httpRuntime maxRequestLength="40960000" executionTimeout="300" />
...
<system.serviceModel>
<client />
<bindings>
<basicHttpBinding>
<binding closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647" >
<readerQuotas maxDepth="2000000" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
Мы используем настольное приложение для использования веб-службы. В app.config у меня есть:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="UploadSoap1" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" >
<readerQuotas maxDepth="2000000" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.example.com/WebServices/Upload.asmx"
binding="basicHttpBinding" bindingConfiguration="UploadSoap1"
contract="mysite.com.upload.UploadSoap" name="UploadSoap1" />
</client>
</system.serviceModel>
Странно: файл 600 КБ работает, но если размер файла> 1 МБ, он имеет эту ошибку. НО, нигде из этой конфигурации я не могу найти никакого отношения к этим числам.
Кто-нибудь знает, в чем проблема? Какие-либо предложения? Может ли это из-за маршрута в MVC?
благодаря
после многих попыток, основанных на результатах поиска, по некоторым причинам это никогда не удавалось. Максимальный загружаемый файл всегда около 600 КБ, не знаю, откуда это взялось. Я подозреваю, что это потому, что я использую традиционную веб-службу asmx в проекте MVC.
В конце я решил сделать это:
это не лучший способ сделать это, но, по крайней мере, это работает. и мы можем дополнительно выбрать размер кадра.
благодаря