Как заставить веб-сервер kestrel прослушивать запросы, отличные от localhost?

я развернул свой c#, asp.net 5, приложение mvc 6 для сервера windows 2008. Я разожгла dnx web и он слушает порт 5000 и нормально работает при доступе с локального компьютера.

как я могу заставить его слушать запросы non-localhost?

P. S. Это вопрос не является дубликатом этого...это относится к asp.net pre RC1 при хостинге.у ini действительно был .формат ini. Теперь это JSON, и я не могу найти никакой документации о том, что на самом деле должно быть в он.

P. P. S. реальное решение находится в непринятом ответ к связанному вопросу, с массивной оговоркой. Шаги:

  1. измените свой проект.json за связанный ответ.
  2. опубликовать проект на сервере.
  3. на сервере ...approotsrcyourproject папка и откройте там командное окно.
  4. выполнить dnx web - Это не
  5. выполнить dnu restore
  6. Run ' dnu build`
  7. Run ' dnx web` - веб-сервер теперь должен начать нормально

3 ответов


файл конфигурации по умолчанию, используемый сервером Kestrel, -hosting.json. Название было изменено несколько раз в разных бета-версий. Если вы используете сейчас project.json следующим "command" раздел

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
}

затем во время запуска сервера из командной строки

dnx web

файл hosting.json будет читать. Файл

{
    "server.urls": "http://0.0.0.0:5000"
}

настроит сервер для прослушивания 5000 на каждом ip4-адресе. Этот конфигурация

{
    "server.urls": "http://::5000;http://0.0.0.0:5000"
}

сообщит, чтобы слушать 5000 на ip4 и IP6 адрес.

можно указать альтернативные файлы конфигурации с помощьюASPNET_ENV переменная окружения или с помощью --config myconfig1.json (или config=myconfig1.json). Например, вы можете использовать

SET ASPNET_ENV=Development

и создать


в RC2 раздел команд проекта.json больше не используется. Я не поручил Кестрель забрать хостинга.json еще нет, но вы можете программно установить порт в основной части приложения, где создается и настраивается новый WebHostBuilder. Просто добавить. Метод UseUrls (), как в примере ниже

    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseUrls("http://0.0.0.0:5000/")
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }

Если вы пытаетесь поставить ASP.NET основное приложение внутри контейнера docker (который был моим вариантом использования для прослушивания адресов, отличных от localhost), обратите внимание, что этот вариант использования уже был собран для вас Microsoft. Вы можете увидеть полную славу в https://hub.docker.com/r/microsoft/aspnetcore/

at current (v1.0.1) ключевой магией для решения этой проблемы является то, что исходный файл Dockerfile содержит параметр переменной среды url, а приложение не пытается переопределить это. (Действительно, контейнерная приложения должны внутренне утверждать как можно меньше о среде, в которой он будет работать.)

ENV ASPNETCORE_URLS http://+:80

обратите внимание на знак плюс, а не звездочку. Я действительно рекомендую посетить приведенную выше ссылку dockerhub над чтением моего ответа до тех пор, пока ссылка хороша. Версия 1.1 не за горами, и все может измениться снова в будущем.

при запуске контейнера, убедитесь, что чтобы предоставить гостевой порт 80, для параметра переменной среды. Например:

docker run -d -p 8000:80 myapp
curl localhost:8000