Zyan 通信框架 - 由于消息被加密,公钥已更改
Posted
技术标签:
【中文标题】Zyan 通信框架 - 由于消息被加密,公钥已更改【英文标题】:Zyan Communication Framework - Public key changed since the message was encrypted 【发布时间】:2015-11-25 09:36:16 【问题描述】:我正在尝试使用 TCP 双工通道使用Zyan Communication Framework 设置简单的 RPC 客户端/服务器通信,但是当客户端尝试连接到服务器时,我一直收到相同的错误“自消息以来公钥已更改已加密”。
我已在客户端和服务器中明确将加密设置为 false,因此我看不到该错误的原因。
出于演示目的,我设置了一个示例来演示问题
版本:
NET 版本 4.5.2 Zyan 2.6.2using System;
using System.Threading;
using Zyan.Communication;
using Zyan.Communication.Protocols.Tcp;
namespace ***MinimalSample
public interface ISampleService
string GetGreeting();
public class SampleService : ISampleService
public string GetGreeting()
return "Hello World";
class Program
static void Main(string[] args)
int port = 5252;
Thread serverThread = new Thread(() =>
var protocol = new TcpDuplexServerProtocolSetup(port)Encryption = false;
using (var tcpHost = new ZyanComponentHost("TCPCommunication", protocol))
tcpHost.RegisterComponent<ISampleService, SampleService>();
Console.WriteLine("Press [Enter] to exit");
Console.ReadLine();
)
IsBackground = true;
serverThread.Start();
Thread clientThread = new Thread(() =>
// Sleep for a while to give time to the server
Thread.Sleep(5000);
var protocol = new TcpDuplexClientProtocolSetup(encryption: false);
var url = protocol.FormatUrl("127.0.0.1", port, "TCPCommunication");
try
using (var connection = new ZyanConnection(url))
ISampleService proxy = connection.CreateProxy<ISampleService>();
string serverMessage = proxy.GetGreeting();
Console.WriteLine("Server message: " + serverMessage);
catch (Exception e)
// This will throw here.
Console.WriteLine("Exception caught: " + e.Message);
)
IsBackground = true;
clientThread.Start();
Console.WriteLine("Press [Enter] to exit");
Console.ReadLine();
【问题讨论】:
【参考方案1】:https://zyan.codeplex.com/discussions/453233
“您正在使用双工 TCP 通道在同一个 AppDomain 中进行连接。TcpEx 通道不支持此功能。
请使用 IpcBinary 通道或 NullChannel 连接同一应用程序域。"
【讨论】:
以上是关于Zyan 通信框架 - 由于消息被加密,公钥已更改的主要内容,如果未能解决你的问题,请参考以下文章