Приложение Asp.Net Core Web API: как изменить адрес прослушивания? - PullRequest
0 голосов
/ 30 апреля 2018

Я пишу простое приложение Asp.Net Core WebAPI 2.0, оно работает на моей локальной машине. Но я хочу развернуть его на сервере. Итак, я делаю это.

Моя система:

Ubuntu 16.04.
Asp.Net WebAPI 2.0 (and dotnet version 2.1.105)

Но при запуске приложения пишет:

Now listening on:http://localhost:53115

Когда я пытаюсь получить значения из него:

  http://id_address:53115/api/values

И я не могу получить ответ. Почтальон:

 Could not get any response
 There was an error connecting to 
 http://id_address:53115/api/values.
 Why this might have happened:
 The server couldn't send a response:
 Ensure that the backend is working properly
 Self-signed SSL certificates are being blocked:
 Fix this by turning off 'SSL certificate verification' in Settings > General
 Proxy configured incorrectly
 Ensure that proxy is configured correctly in Settings > Proxy
 Request timeout:
 Change request timeout in Settings > General

Что мне делать? Можете ли вы сказать мне, как это исправить?

Я не знаю, с чего начать.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Это настраивается URL сервера конфигурация хоста

Указывает IP-адреса или адреса хоста с портами и протоколами, которые сервер должен прослушивать для запросов.
Ключ : URL
Тип : строка
По умолчанию : http://localhost:5000
Установить с помощью : UseUrls
Переменная среды: ASPNETCORE_URLS

Задать разделенный точкой с запятой (;) список префиксов URL-адресов, на которые должен отвечать сервер.


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

dotnet run --urls = http://0.0.0.0:5001

, но это не работает "из коробки" для старых версий ASP.NET Core ( зависит от того, применено ли это исправление к используемой версии или нет ).

Обходной путь для старых версий, основанный на том факте, что вы всегда можете установить настройки хоста напрямую с помощью .UseConfiguration метода:

var config = new ConfigurationBuilder().AddCommandLine(args).Build();

return WebHost.CreateDefaultBuilder(args)
        .UseConfiguration(config)

Обратите внимание, эту же идею можно использовать для считывания значения настройки из любого другого источника конфигурации, например, файл конфигурации .

0 голосов
/ 30 апреля 2018

Я использую .NETCore 2.1 prev, поэтому я не смог протестировать его сам, но если я верю, что https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2, добавление .UseUrls(urls: "http://*:5000") может указывать Kestrel прослушивать порт 5000, а не только на localhost, поэтому он должен работать и на удаленном сервере.

Другое возможное решение, UseKestrel(..) https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x с использованием IPAddress.Any вместо Loopback.

...