.NET HttpListener:在注册HTTP和HTTPS时,我得到"与机器上现有注册冲突"

Gre*_*reg 6 .net httplistener

我正在尝试在C#项目中使用.NET HttpListener.当我注册我的前缀"http://*:8080 /"时,它似乎不适用于HTTPS网址(即不提取它们).当我尝试以下代码来注册前缀的HTTP和HTTPS版本时,我得到错误:

"无法监听前缀'https://:8080 /',因为它与计算机上的现有注册冲突."*

如何让我的前缀适用于HTTP和HTTPS?

    private HttpListener _listener;

    // Create prefixes
    var prefixes = new List<string>();
    prefixes.Add("http://*:8080/");
    prefixes.Add("https://*:8080/");


    // Create HttpListener
    _listener = new HttpListener();
    foreach (string prefix in prefixes)
    {
        _listener.Prefixes.Add(prefix);
    }

    _listener.Start();   // <== ERROR HERE
Run Code Online (Sandbox Code Playgroud)

编辑1 - 补充说明:

  • 该程序作为PC应用程序的本地代理,用于调用HTTP(S).
  • 因此,用法基于将一个浏览器代理设置更改为指向此本地本地代理服务器(例如localhost:8080)
  • 因此,这意味着(我假设)HttpListener必须在同一本地端口(例如8080)上侦听HTTP和HTTPS流量.
  • 目标:尝试找到一种方法让我的程序在同一端口上侦听HTTP和HTTPS.

谢谢

ang*_*ger 8

目标:尝试找到一种方法让我的程序在同一端口上侦听HTTP和HTTPS.

不能使用HTTPListener执行此操作.您需要使用TCPListener并根据它是HTTP还是HTTPS来有条件地处理每个响应.

我很确定如果你使用一个HTTPListener用于HTTP 8080而一个用于HTTPS 8443,你应该能够使你的浏览器使用你的app:8080用于HTTP和yourproxy:8443用于HTTPS.Firefox绝对让你这样做.