【问题标题】:WCF and NetNamedPipeBinding - AVG AntivirusWCF 和 NetNamedPipeBinding - AVG Antivirus
【发布时间】:2011-09-07 21:22:56
【问题描述】:

我们不断有一些客户从 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 是一个垃圾——他们最好在软盘驱动器中放一只兔子的脚,但我的良心不会让我这样做。

【问题讨论】:

    标签: c# .net wcf netnamedpipebinding


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不得不说,您不是唯一一个遇到 AVG 问题的人。事实上,现在我正在用 HTTPBinding 替换这种绑定,以避免该错误,假设我们的标准 WCF 产品不受影响......虽然我也更喜欢你告诉客户 AVG 是一个垃圾:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多