4

C# で WSDL サービスを使用すると、2 つのパラメーターをコンストラクターに渡すことができます。BasicHttpBinding と EndpointAddress

BasicHttpBinding basicHttpBinding = new BasicHttpBinding { MaxReceivedMessageSize = 20000000, MaxBufferSize = 20000000 };
EndpointAddress endpointAddress = new EndpointAddress(delarsListUrl);
var ds = new DealersService.DealersServiceClient(basicHttpBinding,endpointAddress);

F# で WSDL 型プロバイダーを使用する場合、パラメーターを指定しないか、BasicHttpBinding 型のパラメーターを 1 つ指定してコンストラクターを呼び出すことしかできません。では、MaxReceivedMessageSize や MaxBufferSize などのパラメーターを設定するにはどうすればよいでしょうか?

編集:

これを Azure Worker ロールの app.config に入れると

<system.serviceModel>
   <bindings>
     <basicHttpBinding>
       <binding name="basicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
         <readerQuotas maxDepth="32"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"/>
       </binding>
     </basicHttpBinding>
   </bindings>
 </system.serviceModel>

maxReceivedMessageSize が 64k しかないという例外が引き続き発生するため、変更する必要があります。私はC#で同じ問題を抱えていました.app.config設定は無視されているように見えたので、これらの設定でBasicHttpBindingをコンストラクタに渡すことで解決しました。

4

1 に答える 1

7

簡略化されたデータ コンテキスト (T.GetDataContext() によって作成される) は、パラメーターなしのコンストラクターと、EndpointAddress を受け入れるコンストラクターのみを公開します。バインディングを手動でセットアップする場合は、クライアント クラスを直接インスタンス化できます (ServiceTypes 内に配置する必要があります)。

type WSDL = Microsoft.FSharp.Data.TypeProviders.WsdlService< @"http://www.webservicex.net/RealTimeMarketData.asmx?WSDL">
let client = new WSDL.ServiceTypes.RealTimeMarketDataSoapClient(...)
于 2012-10-29T19:08:05.577 に答える