CentOS服务器上的ASP .NET核心控制台应用程序丢弃请求

时间:2017-02-06 14:27:59

标签: c# asp.net linux centos .net-core

我有一个运行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次。

我到处寻找,我真的迷路了,如果有人有想法请告诉我。

1 个答案:

答案 0 :(得分:0)

我发现了问题。与ASP .net或CentOS无关。这是我们的防火墙(在vpn后面),路由规则是由端口ex的范围设置的:从ip1端口10000-10010 - &gt;到ip2端口10000-10010。因此,如果在ip1端口10001上收到消息,我认为它将被发送到ip2端口10001.但不,它被发送到该范围内的随机端口。