我有一个运行ASP.Net核心的应用程序使用控制台(不是Web应用程序,没有IIS)。在Windows上,一切都很好。但是当我在我们的服务器(CentOS 7)上运行它时,大多数请求都会被删除。
我的开始方法是:
...
var config = new ConfigurationBuilder()
.AddCommandLine(new string[] { $"--server.urls={urls}" })
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseStartup<Listener>()
.UseLoggerFactory(loggerFactory)
.Build();
host.Start();
ConsoleKeyInfo key;
while ((key.Modifiers & ConsoleModifiers.Control) != ConsoleModifiers.Control && key.Key != ConsoleKey.Q)
{
key = Console.ReadKey();
}
host.Dispose();
听众:
public class Listener
{
...
public void ConfigureServices(IServiceCollection collections)
{
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Run(async (context) =>
{
...
context.Response.StatusCode = *** some response code ***
using (StreamWriter writer = new StreamWriter(context.Response.Body))
await writer.WriteLineAsync(*** a response ***);
});
}
}
如果用curl尝试一些请求
curl -v http://x.x.x.x:1234/
然后我收到的大部分时间都是:
* timeout on name lookup is not supported
* Trying x.x.x.x...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* connect to x.x.x.x port 1234 failed: Connection refused
* Failed to connect to x.x.x.x port 1234: Connection refused
* Closing connection 0
curl: (7) Failed to connect to x.x.x.x port 1234: Connection refused
但是大多数情况下,这意味着相同的命令有时会起作用。
而且,如果我使用Postman那么它可以在10次中使用〜9次。
我到处寻找,我真的迷路了,如果有人有想法请告诉我。
答案 0 :(得分:0)
我发现了问题。与ASP .net或CentOS无关。这是我们的防火墙(在vpn后面),路由规则是由端口ex的范围设置的:从ip1端口10000-10010 - &gt;到ip2端口10000-10010。因此,如果在ip1端口10001上收到消息,我认为它将被发送到ip2端口10001.但不,它被发送到该范围内的随机端口。