我正在关注此处找到的WsdlService类型提供程序的MSDN教程.当我在家里运行时,它按预期工作.当我在工作中编写相同的代码时,我得到一个设计时异常:
类型提供程序'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders'报告错误:错误:无法从http://msrmaps.com/TerraService2.asmx?WSDL获取元数据
工作确实使用代理,我必须改变web.config,以便在VS2012中从C#项目中使用WSDL时使用默认代理.当我查看类型提供程序的参数时,我没有看到有关代理的提及.有没有人有什么建议?
提前致谢.
扩展Tomas的答案......
这是当今内置类型提供程序中的常见模式:
LocalSchemaFile="...", ForceUpdate=false
静态构造函数.这为TP提供了生成类型所需的所有信息.这是基本相同问题的另一个示例,其中此模式用于设置凭据.
在WSDL的情况下,下面是在事后设置代理的程序化方法(即步骤#2).在C#中完全依赖于这个答案,这正是你想要的.您可能需要稍微玩一下才能使它适合您.
#r "System.ServiceModel.dll"
#r "FSharp.Data.TypeProviders.dll"
open Microsoft.FSharp.Data.TypeProviders
type Terra = WsdlService< ServiceUri="N/A", ForceUpdate = false,
LocalSchemaFile = @"C:\temp\terra.wsdlschema">
let terra = Terra.GetTerraServiceSoap()
let binding = terra.DataContext.Endpoint.Binding :?> System.ServiceModel.BasicHttpBinding
binding.ProxyAddress <- System.Uri("http://127.0.0.1:8888")
binding.BypassProxyOnLocal <- false
binding.UseDefaultWebProxy <- false
terra.GetPlaceList("New York", 1, false)
Run Code Online (Sandbox Code Playgroud)