4

我们不断有一些客户从 AVG Antivirus 收到有关我们应用程序的警告。

我们的应用程序使用 C# 中的 WCF 打开一个标准的 NetNamedPipeBinding,仅用于跨进程通信。

这是我们可以通过某种方式解决的问题吗?我想知道我们是否需要设置一些东西来指示 WCF 服务仅在机器本地。

现在我们只需在 C# 中设置绑定,如下所示:

        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”之类的地址调用来设置绑定。

我想告诉我们的客户,AVG 是垃圾——他们最好在软盘驱动器中放一只兔子的脚,但我的良心不会让我这样做。

4

2 回答 2

0

这比使用 WCF 稍微复杂一些,但您可以简单地使用 TcpClient 和 TcpListener(在 System.Net.Sockets 中),它们可用于打开实际的 TCP 端口并以这种方式进行通信(确保监听IPAddress.Loopback,而不是 Any,否则您可能会收到防火墙警告)。这是跨平台的(Mono 和 .NET),而且似乎通常可以工作!

于 2011-11-29T23:35:53.287 回答
0

我们从未解决过这个问题,而是坚持使用 WCF。

我们还没有遇到任何其他有此问题的客户端机器。

于 2012-03-27T16:46:59.643 回答