Asp.Net Core Web API app: how to change listening address?
Asked Answered
T

3

14

I write simple Asp.Net Core WebAPI 2.0 application, it works on my local machine. But i want to deploy it to server. So, i do it.

My system:

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

But, when app starts it writes:

Now listening on:http://localhost:53115

When i try to get values from it:

  http://id_address:53115/api/values

And i can not get response. In Postman:

 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

What i should do? Can you tell me how to fix that?

I do not know where to start looking for.

Thank you!

Teniers answered 30/4, 2018 at 9:5 Comment(2)
If you are hosting it using Kestrel then the default port is 5000Necolenecro
@SimplyGed, i try 5000, but it is the sameTeniers
P
10

I'm using .NETCore 2.1 prev, so I haven't been able to test it myself but if I believe that https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2, adding .UseUrls(urls: "http://*:5000") might be instructing Kestrel to listen to port 5000 and not only on localhost, so it should work also on a remote server.

Other possible solution, UseKestrel(..) https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x using IPAddress.Any instead of Loopback.

Patio answered 30/4, 2018 at 9:54 Comment(0)
G
10

This is configured by Server urls host configuration

Indicates the IP addresses or host addresses with ports and protocols that the server should listen on for requests.
Key: urls
Type: string
Default: http://localhost:5000
Set using: UseUrls
Environment variable: ASPNETCORE_URLS

Set to a semicolon-separated (;) list of URL prefixes to which the server should respond.


It is also possible to set URL using command line arguments. For example:

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

but this doesn't work out of the box for old versions of ASP.NET Core (depends on whether this fix applied to used version or not).

A workaround for old versions based on fact that you always can set host settings directly via .UseConfiguration method:

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

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

Note, the same idea may be used to read setting value from any other configuration source, like configuration file for example.

Gewirtz answered 30/4, 2018 at 11:23 Comment(1)
I tried all kinds of variation on the --urls option, but I couldn't get anything to workOldfangled
A
0

Try the below, it worked for me.

set ASPNETCORE_SERVER.URLS=http://0.0.0.0:5000/

Anthill answered 28/7, 2020 at 9:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.