C# HTTPListener сервер не доступен с других устройств в локальной сети - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть программа, которая позже нуждалась в способности транслировать веб-страницу, она в основном работает, однако доступ к ней возможен только с той же машины, на которой запущена программа, говорит клиент, и я согласен с ним, что для нашего варианта использования может потребоваться, чтобы он был доступен с других устройств в локальной сети

Код:

using System;
using System.Net;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var web = new HttpListener();
            web.Prefixes.Add("http://localhost:10001/");
            web.Start();
            var context = web.GetContext();
            var response = context.Response;
            const string responseString = "<html><body>Hello world</body></html>";
            var buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            response.ContentLength64 = buffer.Length;
            var output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            output.Close();
            web.Stop();
            Console.ReadKey();
        }
    }
}

Я могу подключиться с адресом localhost: 10001 , но когда используя мой локальный IP +: 10001 я получаю

400 BAD REQUEST, неверное имя хоста

в браузере как на одном компьютере, так и на других устройствах

Хорошо, возможно, просто измените адрес, указанный в коде, на локальный IP +: 10001 ?

using System;
using System.Net;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var web = new HttpListener();
            web.Prefixes.Add("http://192.168.0.12:10001/");
            web.Start();
            var context = web.GetContext();
            var response = context.Response;
            const string responseString = "<html><body>Hello world</body></html>";
            var buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            response.ContentLength64 = buffer.Length;
            var output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            output.Close();
            web.Stop();
            Console.ReadKey();
        }
    }
}

Нет, когда я запускаю его, генерируется исключение

доступ запрещен

в строке web.Start();

Я использую Windows 10 Pro x64 и последние Firefox, недавно обновленные решения. NET версия для последний

Да, были подобные вопросы, но они слишком стары, чтобы доверять t и они включают использование различных инструментов Windows, которые не являются лучшим решением для программы plug and play, исправление кода или указание на то, что я сделал неправильно, было бы прекрасно, заранее спасибо!

...