C # httplistener ошибка, если удаленный IP - PullRequest
3 голосов
/ 19 марта 2012

Я создал httplistener, и он работает только с localhost в качестве префикса.Это показывает ошибку, если я изменяю это на удаленный сервер IP.

Вот код:

 HttpListener listener = new HttpListener();
        listener.Prefixes.Add("http://*:8080/");  // I need localhost replaced with remote ip
        listener.Start();
        while (true)
        {
            // Wait for a client request:
            HttpListenerContext context = listener.GetContext();

            // Respond to the request:
            string msg = "You asked for: " + context.Request.RawUrl;
            context.Response.ContentLength64 = Encoding.UTF8.GetByteCount(msg);
            context.Response.StatusCode = (int)HttpStatusCode.OK;

            using (Stream s = context.Response.OutputStream)
            using (StreamWriter writer = new StreamWriter(s))
                writer.Write(msg);
        }
        listener.Stop();

Это веб-клиент:

   using (WebClient wc = new WebClient())        // Make a client request.
                    wc.DownloadString
                      ("http://"my public ip"(on  my router):8080/lg.txt"); //port forwarding is set
                MessageBox.Show("received");

Это работает, только если я изменю «мой публичный ip» на мой локальный ip Anyидеи?

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Ваш брандмауэр Windows включен?Попробуйте отключить его и посмотрите, поможет ли это.Возможно, вам потребуется отключить службу брандмауэра Windows (в списке локальных служб).

1 голос
/ 19 марта 2012

Во-первых, проверьте брандмауэр.Возможно, более вероятно, однако, http.sys, который используется HttpListener - вы должны сделать префикс доступным для учетной записи через «netsh».Вы можете проверить это, кратко запустив учетную запись администратора с повышенными правами - если это работает, возможно, это проблема с разрешениями http.sys.

...