У меня возникла специфическая проблема с маршрутизацией ASP.NET MVC. Время действия метода MVC истекает каждый раз, это происходит только на конкретном сервере, при тестировании той же конфигурации на других серверах, на которых он работает, у контроллера есть много других методов действия, которые работают без проблем, в то время как этот конкретный метод действия MVC истекает с ошибкой 524
Ниже URL-адреса, где происходит сбой
http://www.126news.com/Publication/AstroStories
Ниже URL, где он работает нормально
http://live.makemypublication.com/Publication/AstroStories
Ниже RouteConfig
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*allsvc}", new { allsvc = @".*\.svc(/.*)?" });
routes.IgnoreRoute("{*allhtml}", new { allhtml = @".*\.html(/.*)?" });
routes.IgnoreRoute("Images/{*pathInfo}");
routes.IgnoreRoute("Content/{*pathInfo}");
routes.IgnoreRoute("Scripts/{*pathInfo}");
routes.IgnoreRoute("Publish/{*pathInfo}");
routes.IgnoreRoute("Views/{*pathInfo}");
routes.IgnoreRoute("{*allrss}", new { allrss = @".*\.rss(/.*)?" });
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "AstroStories",
url: "Publication/AstroStories",
defaults: new { controller = "Publication", action = "AstroStories" }
);
Ниже приведена трассировка HTTP из inetpub / logs / LogFile
2019-03-10 00:12:02 172.31.17.122 GET /Publication/AstroStories - 80 - 141.101.107.97 Mozilla/5.0+(Linux;+Android+7.1.2;+vivo+1611+Build/N2G47H;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/72.0.3626.121+Mobile+Safari/537.36 - 200 0 64 240187
Ниже приведена трассировка HTTP с сервера, на котором он работает нормально
2019-03-10 18:10:42 172.31.21.103 GET /Publication/AstroStories - 80 - 172.68.167.93 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/72.0.3626.121+Safari/537.36 - 200 0 0 805
Обратите внимание, что сервер, на котором он работал, отреагировал за 805 миллисекунд, тогда как на сервере, на котором он работал, отреагировал за 240187
Странно, что на этих двух серверах, работающих на микроэкземпляре EC2, не слишком много нагрузки, не уверен, почему на другом сервере запрос всегда завершается с ошибкой 524, которая является ошибкой CloudFlare, если исходный сервер не отвечает в течение 100 секунд Моя интуиция говорит, что когда другие методы Action на этом же сервере способны быстро ответить, почему только этот метод, в этом методе контроллера только несколько строк кода, который читает RSS и возвращает обратно json
ниже его кода
public ActionResult AstroStories()
{
try
{
//var posts = Enumerable.Empty<FeedItem>();
var rssFeed = XDocument.Load(@"http://www.126news.com/Publish/astrology.xml");
if (rssFeed != null)
{
var posts = from item in rssFeed.Descendants("item")
select new FeedItem
{
title = item.Element("title").Value,
image = item.Element("enclosure").Attribute("url").Value,
pubDate = item.Element("pubDate").Value,
content = item.Element("description").Value
};
return Json(posts, JsonRequestBehavior.AllowGet);
}
else
{
return Json("ERROR: NOT FOUND");
}
}
catch (Exception eX)
{
var st = new StackTrace(eX, true);
// Get the top stack frame
var frame = st.GetFrame(st.FrameCount - 1);
// Get the line number from the stack frame
var line = frame.GetFileLineNumber();
return Json(string.Format("ERROR: {0} LINE {1}", eX.Message, line), JsonRequestBehavior.AllowGet);
}
}
UPDATE:
У меня также возникли другие проблемы: из этого экземпляра EC2 я не могу подключиться к Интернету. Я проверил правила исходящих звонков, которые существуют с настройками по умолчанию 0-65535 открытых портов, я искал в сети это решение несколько дней, но не повезло, я я заканчиваю тем, что создаю новый экземпляр EC2 и разворачиваю это приложение, не очень выполнимо, но мне подходит,
UPDATE
Проблема решена после перезапуска экземпляра aws