c# - 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 秒,但仍然没有响应。如果服务器从未响应,我会认为我没有正确打开端口,但我想不出它只是有时会做出响应。
编辑:我在服务器上有一个日志记录,我确实捕获并记录了异常,当服务器没有响应时没有日志记录。
解决方案
抱歉耽搁了@ADyson,我在等朋友准备一个干净的服务器来测试。正如你所说,问题是路由器。路由器的防火墙有时会丢包,这就是它间歇性响应的原因。在使用没有防火墙的路由器在网络上构建的服务器上进行测试后,一切正常。感谢您的时间@ADyson