我创建了一个AspNet Web服务,当在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秒,但仍然没有响应。如果服务器没有响应,我会以为我没有正确打开端口,但是我认为它只会在什么时候做出响应。
编辑:我在服务器中进行了日志记录,并且确实捕获并记录了异常,而当服务器不响应时,则没有日志记录。
答案 0 :(得分:0)
对不起,@ ADyson的延迟,我在等待一个朋友准备干净的服务器进行测试。正如您所说,问题出在路由器。路由器的防火墙有时会丢弃软件包,这就是它间歇性响应的原因。在基于带有路由器且没有防火墙的网络上构建的服务器上进行测试之后,一切正常。 感谢您的宝贵时间@ADyson