I'm not familiar with C# or dotnet APIs, but I can see some details wrong with the M-SEARCH message:
- MAN header must be enclosed in double quotes, so
MAN: "ssdp:discover"\r\n
- MX header is missing (required for multicast)
- USER-AGENT header is missing
- missing an empty line in the end
- Header names are supposedly case insensitive, but I'd use upper case just in case...
See the Device Architecture reference pdf for more details