Asp.Net Core Web API 应用程序:如何更改监听地址?
Asp.Net Core Web API app: how to change listening address?
我编写了简单的 Asp.Net 核心 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
我该怎么办?你能告诉我如何解决这个问题吗?
我不知道从哪里开始寻找。
谢谢!
我使用的是 .NETCore 2.1 prev,所以我自己无法测试,但如果我相信 https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2,添加 .UseUrls(urls: "http://*:5000")
可能会指示 Kestrel 监听端口5000 并且不仅在本地主机上,所以它也应该在远程服务器上工作。
其他可能的解决方案,UseKestrel(..)
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x 使用 IPAddress.Any
而不是 Loopback
。
这由 Server urls 主机配置
配置
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.
也可以使用命令行参数设置 URL。例如:
dotnet run --urls=http://0.0.0.0:5001
但这不适用于旧版本的 ASP.NET Core (depends on whether this fix applied to used version or not)。
基于您始终可以直接通过 .UseConfiguration
方法设置主机设置这一事实的旧版本解决方法:
var config = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
注意,同样的想法可用于从任何其他配置源读取设置值,例如 。
试试下面的方法,它对我有用。
设置ASPNETCORE_SERVER.URLS=http://0.0.0.0:5000/
我编写了简单的 Asp.Net 核心 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
我该怎么办?你能告诉我如何解决这个问题吗?
我不知道从哪里开始寻找。
谢谢!
我使用的是 .NETCore 2.1 prev,所以我自己无法测试,但如果我相信 https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2,添加 .UseUrls(urls: "http://*:5000")
可能会指示 Kestrel 监听端口5000 并且不仅在本地主机上,所以它也应该在远程服务器上工作。
其他可能的解决方案,UseKestrel(..)
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x 使用 IPAddress.Any
而不是 Loopback
。
这由 Server urls 主机配置
配置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_URLSSet to a semicolon-separated (;) list of URL prefixes to which the server should respond.
也可以使用命令行参数设置 URL。例如:
dotnet run --urls=http://0.0.0.0:5001
但这不适用于旧版本的 ASP.NET Core (depends on whether this fix applied to used version or not)。
基于您始终可以直接通过 .UseConfiguration
方法设置主机设置这一事实的旧版本解决方法:
var config = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
注意,同样的想法可用于从任何其他配置源读取设置值,例如
试试下面的方法,它对我有用。
设置ASPNETCORE_SERVER.URLS=http://0.0.0.0:5000/