我目前正在尝试扩展一个只支持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上,是否甚至有可能完成与客户端的服务器连接。
是的。我知道。周转基金是剥夺,但它不是我的想法,以发展它。。谢谢你的时间!:)
1条答案
按热度按时间c8ib6hqw1#
wcf不能直接在.NET 6.0中使用。您需要将wcf代码迁移到CoreWCF或考虑使用gRPC。