WCF服务器使用.net 4.7,客户端使用.net 6.0 -协议错误

toe95027  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(272)

我目前正在尝试扩展一个只支持Windows的WCF程序,使其在Linux上可行。因此,我需要将WCF后端通信端口连接到.net 6.0。我建立了一个服务器连接,如下所示:

public static IService Connect(ServerCredential credentials, IServiceCallback callback)
{
    var binding = new NetHttpBinding(BasicHttpSecurityMode.None, true)
    {
        WebSocketSettings =
        {
            TransportUsage = WebSocketTransportUsage.Always
        },
        ReaderQuotas =
        {
            MaxDepth = int.MaxValue,
            MaxArrayLength = int.MaxValue,
            MaxBytesPerRead = int.MaxValue
        },
        MaxReceivedMessageSize = 2147483647L,
        SendTimeout = TimeSpan.FromMinutes(20.0),
        ReceiveTimeout = TimeSpan.FromSeconds(2.0),
        OpenTimeout = TimeSpan.FromSeconds(2.0),
        CloseTimeout = TimeSpan.FromSeconds(2.0)
    };

    var instanceContext = new InstanceContext(callback);

    var factory = new DuplexChannelFactory<IService>(
        instanceContext,
        binding,
        new EndpointAddress(credentials.Domain));

    var channel = factory.CreateChannel();

    channel.Authenticate(credentials.User, credentials.Password); // <- error

    return channel;
}

错误消息:

  • 系统.服务模型.协议异常:'远程终结点请求的确认地址与应用程序消息的地址不同。无法打开通道,因为不支持此操作。*

我在一个.NET 4. 7应用程序中尝试了相同的代码,它工作正常。(当然,其他使用名称空间和其他语法的应用程序也是如此)
我现在的问题是,如果WCF客户端是在.net 6上,服务器是在.net 4. 7上,是否甚至有可能完成与客户端的服务器连接。
是的。我知道。周转基金是剥夺,但它不是我的想法,以发展它。。谢谢你的时间!:)

c8ib6hqw

c8ib6hqw1#

wcf不能直接在.NET 6.0中使用。您需要将wcf代码迁移到CoreWCF或考虑使用gRPC

相关问题