首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uwp httplistener不听

uwp httplistener不听
EN

Stack Overflow用户
提问于 2022-11-06 11:35:29
回答 1查看 32关注 0票数 0

我有一个ToggleSwitch,当它打开时会启动一个HttpListener。下面是打开侦听器的代码。

我的问题是HttpListener没有在监听。我通过邮递员请求http://localhost:8023,请求总是超时。只有在调用GetContextCallBack时才调用httpListener.Stop()。我的代码有什么问题?它在控制台应用程序中工作,但在UWP中不工作。

代码语言:javascript
复制
private void LaunchLocalServer(int port)
{
    httpListener = new HttpListener();
    httpListener.Prefixes.Add($"http://127.0.0.1:{port}/");
    httpListener.Start();
    httpListener.BeginGetContext(new AsyncCallback(GetContextCallBack), httpListener);
}

private void GetContextCallBack(IAsyncResult ar)
{
    try
    {
        HttpListener _listener = ar.AsyncState as HttpListener;
        if (_listener.IsListening)
        {
            return;
        }

        HttpListenerContext context = _listener.EndGetContext(ar);
        _listener.BeginGetContext(new AsyncCallback(GetContextCallBack), _listener);

        HttpListenerResponse response = context.Response;
        response.StatusCode = (int)HttpStatusCode.OK;
        response.ContentType = "application/json;charset=UTF-8";
        response.ContentEncoding = Encoding.UTF8;
        response.AppendHeader("Content-Type", "application/json;charset=UTF-8");

        var abcOject = new
        {
            code = "200",
            description = "success",
            data = "time=" + DateTime.Now
        };
        string responseString = JsonConvert.SerializeObject(abcOject,
            new JsonSerializerSettings()
            {
                StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
            });

        using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
        {
            writer.Write(responseString);
            writer.Close();
            response.Close();
        }
    }
    catch (Exception ex)
    {
        Log.Warn($"handle response failed {ex}");
    }
}

完整代码是这里

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 03:21:42

这种行为的一个普遍原因是,您需要首先启用UWP应用程序的本地回送( UWP启用本地网络回送 )。UWP应用程序在沙箱中运行,并与系统资源隔离。启用本地网络回送可以使UWP应用程序能够访问本地网络资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74335495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档