C#HttpListener类不适用于Windows 10版本1803

时间:2018-10-16 06:14:12

标签: c# smb httplistener

我正在Windows 10计算机上安装软件,并全新安装了更新程序1803,该更新使用C#HttpListener类作为Web服务器。自XP以来,该软件已在Windows的所有版本上运行。但是在1803年,我无法突然连接到Web服务器。如果我以管理员身份运行该软件(以前从未做过),则只能在localhost上进行连接,而不能从网络上的另一台计算机上进行连接。

我已经遍历了有关与1803版联网以及共享和启用SMB 1版的所有文章,但是这些都没有解决这个问题。此刻我感到困惑。

这是服务器代码:

internal WebServer(RuntimeDB database)
{
    _db = database;
    ThreadPool.SetMaxThreads(50, 1000);
    ThreadPool.SetMinThreads(5, 50);
    _listener = new HttpListener {IgnoreWriteExceptions = true};
    _listener.Prefixes.Add("https://+:443/secure/");
    _listener.Prefixes.Add("http://+:80/trigger/");
}

internal void Start()
{
    try {
        _listener.Start();
        while (_listener.IsListening) {
            try {
                var request = _listener.GetContext();
                ThreadPool.QueueUserWorkItem(ProcessRequest, request);
            } catch (HttpListenerException) {
                break;
            } catch (InvalidOperationException) {
                break;
            }
        }
    } catch (Exception e) {
        LogMsg($"Fatal Error on thread WebServer: {e.Message}. Source: {e.Source} Target Site: {e.TargetSite}  Stack Trace: {e.StackTrace}");
    } finally {
        _listener?.Stop();
        _listener?.Close();
    }
}

这在Windows 10的早期版本上运行良好,因此我假设网络堆栈中有一些更改或其他内容。该代码未生成任何异常。任何线索都值得赞赏。

1 个答案:

答案 0 :(得分:0)

您必须使用netsh命令启用对特定端口的侦听。

netsh add urlacl url=http://+:80/ user=DOMAIN\user listen=yes

有关更多信息,请参见this