Время действия метода действия MVC: ошибка 524 - PullRequest
0 голосов
/ 11 марта 2019

У меня возникла специфическая проблема с маршрутизацией 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

...