如何从 IIS (Express) 中的远程主机接收 UDP 数据报?

问题描述

我有一个 Web 应用程序,我想通过某些功能对其进行扩展。远程主机应通过 Udp 数据报通知应用有关传感器设备触发的事件。

我已经成功设置了远程主机,并且还设法编写了一个简单的 .NET 控制台应用程序,该应用程序打开一个 UdpClient 并通过 UdpClient.Receive() 方法将数据获取到控制台上。

现在我想将 Udp 接口集成到我在 IISExpress 10.0 Express 中托管的 Web 应用程序中。 但似乎 IIS 不允许我从远程主机接收 Udp 数据报。 UdpClient.Receive() 方法只是永远阻塞。没有例外,什么都没有。

我不太明白这里的问题是什么。我的控制台应用程序能够在同一端口上接收数据,因此它不可能是防火墙/全局系统配置错误。而且当我将一些 Udp 数据从本地应用程序发送到本地主机时,它甚至在 IIS 中也能工作。它似乎只是阻止了来自外部世界的 Udp 流量。

我认为,但这只是一个猜测,它与 applicationhost.config 中配置的绑定有关。我的应用程序当前仅配置为接受端口 5000 上的 http 请求,这可能导致 IIS 仅侦听端口 5000 上的 TCP 连接,而不侦听任何其他端口上的 UDP。

这是我使用的代码,它在 IIS 之外运行良好:

UdpClient client;
IPEndPoint local = new IPEndPoint(IPAddress.Any,3636);
IPEndPoint remote = new IPEndPoint(IPAddress.Any,0);
client = new UdpClient(remote);
byte[] bytes = client.Receive(ref remote);
Console.WriteLine(bytes.Length);

我有什么想法可以让它发挥作用吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)