C# HttpListner未侦听

C# HttpListner未侦听,c#,httplistener,C#,Httplistener,我试图检查是否有对特定url的ajax请求,如果是,则尝试向请求添加cookie 但是我的HttpListner只监听localhost。如果我试图给出任何其他url,它就不会监听 我也关闭了防火墙,但仍然存在同样的问题 请告诉我哪里出错了 下面是我的代码: class Program { static void Main(string[] args) { HttpListener listner = new HttpListener(); lis

我试图检查是否有对特定url的ajax请求,如果是,则尝试向请求添加cookie

但是我的HttpListner只监听
localhost
。如果我试图给出任何其他url,它就不会监听

我也关闭了防火墙,但仍然存在同样的问题

请告诉我哪里出错了

下面是我的代码:

class Program
{
    static void Main(string[] args)
    {
        HttpListener listner = new HttpListener();
        listner.Prefixes.Add("<my url>");//For example, https://www.google.co.in/
        listner.Start();
        HttpListenerContext context = listner.GetContext();

        HttpListenerRequest request = context.Request;
        WebRequest webReq = WebRequest.Create(request.Url);

        //Copying the headers
        System.Collections.Specialized.NameValueCollection headers = request.Headers;
        for (int i = 0; i < headers.AllKeys.Length; i++)
        {
            if (!WebHeaderCollection.IsRestricted(headers.AllKeys[i]))
            {
                webReq.Headers.Add(headers.AllKeys[i], headers[headers.AllKeys[i]]);
            }
        }

        webReq.ContentLength = request.ContentLength64;
        webReq.ContentType = request.ContentType;
        webReq.Headers.Add(HttpRequestHeader.Cookie, "<My Cookie>");


        HttpListenerResponse response = context.Response;
        WebResponse webResponse = webReq.GetResponse();
        webResponse.GetResponseStream().CopyTo(response.OutputStream);

    }
}
类程序
{
静态void Main(字符串[]参数)
{
HttpListener listner=新建HttpListener();
listner.Prefixes.Add(“”;//例如,https://www.google.co.in/
Start();
HttpListenerContext=listner.GetContext();
HttpListenerRequest=context.request;
WebRequest webReq=WebRequest.Create(request.Url);
//复制标题
System.Collections.Specialized.NameValueCollection headers=请求.headers;
对于(int i=0;i
无论您向侦听器添加什么前缀,都必须解析为本地主机。确保DNS服务器将主机正确解析为运行代码的计算机

如果您在开发环境中测试此功能和/或无法控制DNS服务器,请在主机文件中添加一个条目,该条目将您想要使用的任何主机名映射到本地计算机


另外要注意的是港口。确保在您打算使用的端口上没有其他内容正在侦听。

我非常确定httplistener用于制作web服务器等。将url设置为google意味着“我想处理进入google的web请求”,这是不会发生的。您想用它做什么?当我试图使用$.ajax发送跨源请求时,浏览器正在删除验证请求的cookies。因此,我正在编写一个代理,它将拦截请求,添加标题,然后发送它。我想处理从我的机器发送到google(示例)的web请求。我认为您正在试图解决一个已经解决的问题:它有点像fiddler。Fiddler能够侦听我从计算机发出的任何请求。这是否意味着如果我侦听“”,侦听器将不会启动?您需要了解主机名是如何解析的。您可以通过在本地主机文件中添加将域Google.com指向本地计算机的条目来覆盖DNS解析。只有这样,请求才会被路由到本地侦听器。花点时间读一下:也读一下: