web-services - 用于 WSDL 和 BasicHttpBinding 的 F# 类型提供程序

标签 web-services f# wsdl type-providers

当我在 C# 中使用 WSDL 服务时,我可以将两个参数传递给构造函数; 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 类型的一个参数的情况下调用构造函数。那么如何设置 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 传递给构造函数来解决它。

最佳答案

简化的数据上下文(通过 T.GetDataContext() 创建)仅公开无参数构造函数和接受 EndpointAddress 的构造函数。如果您想手动设置绑定(bind) - 您可以直接实例化客户端类(它应该位于 ServiceTypes 中),即:

type WSDL = Microsoft.FSharp.Data.TypeProviders.WsdlService< @"http://www.webservicex.net/RealTimeMarketData.asmx?WSDL">
let client = new WSDL.ServiceTypes.RealTimeMarketDataSoapClient(...)

关于web-services - 用于 WSDL 和 BasicHttpBinding 的 F# 类型提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13109959/

相关文章:

c# - f# 控制台应用程序不工作。 c# 控制台应用程序确实

f# - 我应该使用 new Type() 还是只使用 Type() 来调用构造函数

c# - 使用 Null SOAP WSDL

java - 在weblogic中部署jar时出错

.net - 如何将用英语单词编写的数字解析为 F# 中的等效数字?

java - 带有路径注释的简单 REST 服务 - 404 错误

java - 为 xsd :any element while importing WSDL using wsimport 提供架构

Java SOAP 请求

c# - 英国火车信息API?

java - 基于 JBoss EJB 的 Web 服务日期格式