在 NetStandard 2.0 Class 库中托管 WCF 服务

Hosting a WCF service in NetStandard 2.0 Class Library

我最近使用升级助手工具将 dotnet 框架 v4.7.2 WCF 服务迁移到 NetStandard 2.0。该项目已成功迁移和编译,但是 我无法从 visual studio 或 dotnet cli 启动该服务。 我从 dotnet cli 工具得到的错误是:

A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found.

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

A project with an output type of class library couldnt start directly.

P.S 当 WCF 服务仍然是 dotnet framework v4.7.2 时,我可以在 visual studio.

中轻松地启动服务执行上述过程

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

您可以备份升级到4.7.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.