我使用远程V1提供了多项服务,而使用V2_1提供了新服务。
使用Microsoft.ServiceFabric.Services.Remoting版本3.2.162从asp.net核心2.1应用程序调用V2_1服务没问题。 但是我无法调用“旧的” V1服务,因为它尝试通过V2_1进行连接。第一次引发异常:
NamedEndpoint 'V2_1Listener' not found in the address '{"Endpoints":{"":"DESKTOP-XX:33016+086fcdfa-9eba-49e0-8953-6fae844d8cf0-131779318708109471-d1b542d1-71bb-40a8-b22d-d0aabc9f4f5c"}}' for partition '086fcdfa-9eba-49e0-8953-6fae844d8cf0'
第二次挂起,并且占用大量CPU。
创建自定义ServiceProxyFactory的workaround不再起作用,因为在3.2.162中删除了命名空间Microsoft.ServiceFabric.Services.Remoting.V1
因此,我决定在upgrade steps之后,通过添加一个额外的V2_1侦听器来升级V1服务。但是在处理完这一行之后再次出现:
[assembly: FabricTransportServiceRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2_1 | RemotingListenerVersion.V1, RemotingClientVersion = RemotingClientVersion.V2_1)]
找不到RemotingListenerVersion.V1。
我不能简单地将V1侦听器更改为V2_1,因为其他服务取决于它。
我该怎么办?可以同时使用V1和V2_1吗?我在这里有点困惑。
答案 0 :(得分:1)
Service Fabric Remoting V2 is not supported in .NET Core.我无法相信它没有记录。
就我而言,我有一个针对.NET Standard 2.0的域项目,而服务项目正在引用该程序包并针对.NET 4.6.2。
因此,我更改了迁移计划: