.NET:Tips > WCF:送受信受信可能な最大メッセージ サイズを増やす
その1
エラー内容
【クライアント←サーバー】
--------------------
受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。このクォータを増やすには、適切
なバインド要素の MaxReceivedMessageSize プロパティを使用してください。
--------------------
Server stack trace:
場所 System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded()
場所 System.ServiceModel.Channels.HttpInput.GetMessageBuffer()
場所 System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream)
場所 System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException)
場所 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitF
orReply(TimeSpan timeout)
場所 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
場所 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeo
ut)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperat
ionRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperat
ionRuntime operation, Object[] ins, Object[] outs)
場所 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall
, ProxyOperationRuntime operation)
場所 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
【クライアント→サーバー】
--------------------
リモート サーバーから予期しない応答が返されました: (400) Bad Request。
--------------------
Server stack trace:
場所 System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebReques
t request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException)
場所 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitFo
rReply(TimeSpan timeout)
場所 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
場所 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeou
t)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperati
onRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperati
onRuntime operation, Object[] ins, Object[] outs)
場所 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall
, ProxyOperationRuntime operation)
場所 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
対処法
【App.config[クライアント←サーバー]】
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="LargeMessageBinding"
maxReceivedMessageSize="1073741824"
maxBufferSize="1073741824"
maxBufferPoolSize="1073741824">
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint name="HogeService"
address="http://xxxxx/HogeService.svc"
binding="basicHttpBinding"
contract="Hoge.HogeService"
bindingConfiguration="LargeMessageBinding"
/>
</client>
</system.serviceModel>
</configuration>
【Web.config[クライアント→サーバー]】
<configuration>
<configSections>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="LargeMessageBinding"
maxReceivedMessageSize="1073741824"
maxBufferSize="1073741824"
maxBufferPoolSize="1073741824">
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="Behavior1" name="Hoge.HogeService">
<endpoint address="" binding="basicHttpBinding" contract="Hoge.HogeService" bindingConfigur
ation="LargeMessageBinding">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>
参考ページ
その2
エラー内容
【クライアント→サーバー】
--------------------
http://127.0.0.1:3293/SampleSite/HogeService.svc に対する HTTP 応答の受信中にエラーが発生しました。
この原因としては、サービス エンドポイント バインドが HTTP プロトコルを使用していないことが考えられ
ます。また別の原因として、HTTP 要求コンテキストがサーバーによって中止された可能性もあります (サーバ
ーがシャットダウンした場合など)。詳細についてはサーバー ログを参照してください。
--------------------
Server stack trace:
場所 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebExcepti
on webException, HttpWebRequest request, HttpAbortReason abortReason)
場所 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitF
orReply(TimeSpan timeout)
場所 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
場所 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeo
ut)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperat
ionRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
場所 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperat
ionRuntime operation, Object[] ins, Object[] outs)
場所 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCal
l, ProxyOperationRuntime operation)
場所 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
対処法
【Web.config】
<configuration>
<config>
<system.web>
<!-- 通信容量150MB、実行時タイムアウト30分 -->
<httpRuntime maxRequestLength="153600" executionTimeout="1800" />
</system.web>
<!-- IIS7で必要な設定 -->
<system.webServer>
<security>
<requestFiltering>
<!-- 通信容量1G -->
<requestLimits maxAllowedContentLength="1073741824"/>
</requestFiltering>
</security>
</system.webServer>
</config>
</configuration>
0 件のコメント:
コメントを投稿