我们一直有一些客户从 AVG Antivirus 收到有关我们应用程序的警告。
我们的应用程序在 C# 中使用 WCF 打开标准的 NetNamedPipeBinding,仅用于跨进程通信。
我们可以通过某种方式解决这个问题吗?我想知道我们是否需要设置一些东西来指示 WCF 服务仅在机器本地。
现在我们只需像这样在 C# 中设置绑定(bind):
var binding = new NetNamedPipeBinding();
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.ReaderQuotas = XmlDictionaryReaderQuotas.Max;
binding.ReceiveTimeout = TimeSpan.MaxValue;
我没有看到其他重要的设置,我们只是调用 ServiceHost.AddServiceEndpoint
并使用类似“net.pipe://localhost/OurEndpoint”的地址来设置绑定(bind)。
我想告诉我们的客户,AVG 是一个垃圾——他们最好在软盘驱动器中放一个兔子脚,但我的良心不允许。
最佳答案
这比使用 WCF 稍微复杂一些,但您可以简单地使用 TcpClient 和 TcpListener(在 System.Net.Sockets 中),它们可用于打开实际的 TCP 端口并以这种方式通信(确保监听 IPAddress.Loopback,而不是 Any,否则您可能会收到防火墙警告)。这是跨平台的(Mono 和 .NET),而且似乎通常有效!
关于c# - WCF 和 NetNamedPipeBinding - AVG 防病毒软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340676/