具有本地wsdl文件的F#web服务数据提供程序

具有本地wsdl文件的F#web服务数据提供程序,f#,type-providers,F#,Type Providers,我正在尝试为我们的web服务编写F#client。该示例看起来非常好,只是在代码中使用了服务器url type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL"> type TerraService=WsdlService 这会阻止我在运行时从配置文件中读取服务url,并使从开发服务器到生产服务器的部署变得困难 我想知道是否有任何WSDL提供程序的工作方式类似于目前没有任何提供程序可以做

我正在尝试为我们的web服务编写F#client。该示例看起来非常好,只是在代码中使用了服务器url

type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
type TerraService=WsdlService
这会阻止我在运行时从配置文件中读取服务url,并使从开发服务器到生产服务器的部署变得困难


我想知道是否有任何WSDL提供程序的工作方式类似于

目前没有任何提供程序可以做到这一点,但代码是开源的,因此您可以制作一个在您希望的模式下工作的版本:

我不确定我是否完全理解您要查找的内容,但请注意,作为静态参数提供的URL用于生成类型,但如果需要,可以在运行时使用不同的
Get…Soap
方法重载来提供不同的URL。此URL可以来自任何您想要的地方(例如,如果您的情况是这样的,您可以从配置文件中读取它)。例如:

type TerraService=WsdlService
让terraClient=TerraService.GetTerraServiceSoap(端点地址(myRuntimeUrl))

我想我给出了相关的答案:想象一下,您针对开发服务器编写代码,并使一切正常运行。当您决定部署代码以与生产服务器协同工作时,您必须修改源代码以实现这一点。这看起来不是一个好的做法。我更喜欢修改用于部署的配置文件。@WeiMa-不,我的观点是,您不需要修改源代码,假设更改的只是URL。在我的示例代码中,
myRuntimeUrl
可以从配置文件中读取,而无需更改应用程序的源代码。好的,我明白你的意思了。我认为你的建议行得通。我仍然认为在源代码中使用类似于WsdlService的东西不如WsdlService。无论如何,谢谢您的帮助。当您需要在
http
https
之间切换时,此功能不起作用。此网页不可用。
type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
let terraClient = TerraService.GetTerraServiceSoap(EndpointAddress(myRuntimeUrl))