WCF and NetNamedPipeBinding - AVG Antivirus
We keep having some customers getting a warning from AVG Antivirus about our appl开发者_运维问答ication.
Our application opens a standard NetNamedPipeBinding with WCF in C#, just for cross-process communication.
Is this something we can workaround in some way? I'm wondering if there is something we need to set to indicate the WCF service is local to the machine only.
Right now we just setup the binding in C# like so:
var binding = new NetNamedPipeBinding();
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.ReaderQuotas = XmlDictionaryReaderQuotas.Max;
binding.ReceiveTimeout = TimeSpan.MaxValue;
I don't see other settings of importance, we just call ServiceHost.AddServiceEndpoint
with an address like "net.pipe://localhost/OurEndpoint" to set the binding.
I would like to tell our customers that AVG is a piece of junk--they'd be better off putting a rabbit's foot in their floppy drive, but my conscience won't let me.
This is a bit more complex than using WCF, but you could simply use a TcpClient and a TcpListener (in System.Net.Sockets), which could be used to open up an actual TCP port and communicate that way (make sure to listen on IPAddress.Loopback, not Any, or you might get a firewall warning). This is cross-platform (Mono and .NET), and seems to usually work!
We never solved this issue, but stuck with WCF.
We haven't run into any other client machines with this problem.
精彩评论