【问题标题】:Hosting a WCF service in NetStandard 2.0 Class Library在 NetStandard 2.0 类库中托管 WCF 服务
【发布时间】:2021-11-13 22:20:50
【问题描述】:

我最近将带有升级助手工具的 dotnet framework v4.7.2 WCF 服务迁移到 NetStandard 2.0。项目成功迁移和编译,但是我无法从 Visual Studio 或 dotnet cli 启动服务。 我从 dotnet cli 工具得到的错误是:

遇到致命错误。未找到执行应用程序所需的库“hostpolicy.dll”。

并且我尝试从 Visual Studio 启动服务时遇到的错误,解决方案资源管理器 -> 右键单击​​ wcf 项目 -> 调试 -> 启动新实例是:

输出类型为类库的项目无法直接启动。

P.S 当 WCF 服务还是 dotnet framework v4.7.2 时,我可以很容易地在 Visual Studio 中执行上述过程来启动服务。

【问题讨论】:

    标签: c# wcf .net-standard-2.0 wcf-hosting


    【解决方案1】:

    据我所知,.net 4.7.2 是支持 .netstandard 2.0 In this link 的最低真实版本。

    您可以将其备份并升级到 4.7.2 进行试用。

    【讨论】:

    • v4.7.1 是一个错字,我编辑了它。 wcf 宿主项目中使用的 dotnet 框架的正确版本是 v4.7.2 。无论如何,Tanx ?
    • 但是这个操作不太可行,没有什么好的移植方法。
    【解决方案2】:

    .NET Standard 或 .NET Core/.NET 5+ 不支持 WCF 服务器 API,因此没有好方法可以向前迁移此类应用程序。

    升级助手会尝试根据之前的项目类型确定项目是否应该升级到库或 exe。对于这个项目,Upgrade Assistant 猜测它是一个库,因为没有传统的 main 方法,也不是 Web 应用程序或工具理解为可执行的其他项目类型。但是,无论是将其升级为 .NET Standard 库还是 .NET 5 exe,它都不起作用,因为 WCF 服务器 API 仅在 .NET Framework 上受支持。

    如果升级助手在此过程的早期提醒您这一点可能会很好,这样您就知道升级不适用于此类项目。我认为它具有这样的功能,但对于这个特定的项目,它一定是错过了。您可以在该工具的 GitHub 页面 (https://github.com/dotnet/upgrade-assistant/issues) 上提供反馈。

    至于如何实际升级 WCF 服务器,您需要使用不同的技术重新架构,例如 ASP.NET Core、gRPC 或 CoreWCF

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      相关资源
      最近更新 更多