【问题标题】:How to access a WCF service from F# in .NET Core 3.1?如何从 .NET Core 3.1 中的 F# 访问 WCF 服务?
【发布时间】:2021-02-13 11:21:30
【问题描述】:

在.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 的推荐升级路径是什么?

【问题讨论】:

    标签: wcf f# wsdl


    【解决方案1】:

    这是 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

    【讨论】:

    • 我没有看到要添加的 WCF 服务?
    • @AlanWayne 你能更具体一点吗?通常,您可以通过其 http 端点添加服务,该端点引用来自 VS 的 wsdl 文件。然后在 C# 和 F# 代码中,您可以创建一个类型,例如 type MyPortType,并在代码中引用它。如果可以通过 svcutil 手动生成代码,则编译并引用项目或 dll。最简单的方法是构建一个包含 WCF 服务的空 C# dll,并从 F# 中引用它,这样您就可以访问所有类型。
    • 我的错误。 WCF 服务可用,但前提是项目是 C# .NET Core、.NET Standard 或 ASP.NET Core Web 应用程序。我在最初的阅读中错过了这一点。很好的参考:使用 docs.Microsoft.com 上的 WCF Web 服务参考提供工具 谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2021-05-01
    • 2020-10-22
    • 2019-07-15
    相关资源
    最近更新 更多