首页 > 解决方案 > Webservice 有时不响应外部请求

问题描述

我创建了一个 AspNet 网络服务,在 localhost 中测试时一切顺利。我将它安装到我的服务器(windows server 2012),在 localhost 中执行请求按预期完美运行,但是当尝试从外部访问时,例如使用我手机的数据,有时 web 服务响应,有时不响应。

我试图增加超时没有任何运气。此外,我提出的请求只是在没有任何数据库连接的情况下测试连接。

程序代码:

    public class Program
    {
        public static IWebHost host;
        public static void Main(string[] args)
        {

            var isService = !(Debugger.IsAttached || args.Contains("--console"));

            if (isService)
            {
                var pathToExe =                   Process.GetCurrentProcess().MainModule.FileName;
                var pathToContentRoot = Path.GetDirectoryName(pathToExe);
                Directory.SetCurrentDirectory(pathToContentRoot);
            }

            var builder = CreateWebHostBuilder(
                args.Where(arg => arg != "--console").ToArray());

            host = builder.Build();

            if (isService)            
                host.RunAsService();            
            else
                host.Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureLogging((hostingContext, logging) =>
                {                    
                    logging.AddEventLog();
                })
                .ConfigureAppConfiguration((context, config) =>
                {
                // Configure the app here.
                })
            .UseUrls("http://0.0.0.0:5000")
            .UseStartup<Startup>();
    }



我期望与在 localhost 中执行请求时的行为相同,我确实理解服务器需要更多时间来响应,但有时只是没有。我已将超时设置为 1000 秒,但仍然没有响应。如果服务器从未响应,我会认为我没有正确打开端口,但我想不出它只是有时会做出响应。

编辑:我在服务器上有一个日志记录,我确实捕获并记录了异常,当服务器没有响应时没有日志记录。

标签: c#asp.net

解决方案


抱歉耽搁了@ADyson,我在等朋友准备一个干净的服务器来测试。正如你所说,问题是路由器。路由器的防火墙有时会丢包,这就是它间歇性响应的原因。在使用没有防火墙的路由器在网络上构建的服务器上进行测试后,一切正常。感谢您的时间@ADyson


推荐阅读