首页 > 解决方案 > 如何在 .NET Core 3.1 中从 F# 访问 WCF 服务?

问题描述

在 .Net Framework 4.7.2 F# 中,我一直在使用:

FSharp.Data.TypeProviders

  type WSDL =  WsdlService<"http://...ServiceHost.svc">
  type AV   =  WsdlService<"http://...ServiceHost.svc">

从 F# .fs 文件访问我的本地 WCF 网络服务。

使用 .NET Core 3.1 时,如何从 F# 客户端访问 WCF 服务?

TIA

如果不是,WCF/petapoco/PostgreSQL 的推荐升级路径是什么?

标签: wcff#wsdl

解决方案


这是 F# 3.0 中的旧类型提供程序,它依赖 svcutil 进行代码生成。您可以参考它的 n​​uget 包,但可能(很可能)不支持 dotnet-svcutil 工具。但是您可以使用 C# 中的 WCF,因此:

  1. 将新的 C# 项目添加到您的解决方案
  2. 在 Visual Studio 中添加 Connected Service 并配置您的端点,这将生成必要的代码,构建您的项目(并测试它是否有效)
  3. 从您的 F# 项目中,添加对此 C# 项目的引用,然后open ProjectName
  4. 创建您的类型,并从 F# 中使用它。您将获得有关类型的智能感知,因此用户体验与类型提供者没有太大区别。
  5. 如果需要,您可以发布自包含的 exe:
    dotnet publish -r win10-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true

推荐阅读