Asp.Net核心Web API应用程序:如何更改收听地址?

时间:2018-04-30 09:05:09

标签: ubuntu asp.net-core asp.net-core-2.0 asp.net-core-webapi kestrel

我编写简单的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

我该怎么办?你能告诉我如何解决这个问题吗?

我不知道从哪里开始寻找。

谢谢!

3 个答案:

答案 0 :(得分:4)

我正在使用.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

答案 1 :(得分:3)

这是由Server urls主机配置

配置的
  

表示服务器应监听请求的端口和协议的IP地址或主机地址   :网址
  输入:字符串
  默认http://localhost:5000
  使用设置:UseUrls
  环境变量:ASPNETCORE_URLS

     

设置为服务器应响应的URL前缀的以分号分隔的(;)列表。

也可以使用命令行参数设置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)

注意,可以使用相同的想法从任何其他配置源读取设置值,例如configuration file

答案 2 :(得分:0)

尝试以下方法,对我有用。

设置ASPNETCORE_SERVER.URLS = http://0.0.0.0:5000 /