2017-01-26 3 views
0

У меня есть проект MVC, который отлично работает локально. Публикуя его в среде dev, мы сталкиваемся с проблемой, когда мы получаем 404 на одной из страниц. Странная часть - это случается только иногда, и мы обычно можем ее исправить, публикуя ее снова, пока она не исчезнет. Ошибка только одной страницы.ASP.Net 404 После публикации Иногда

То, что мы пытались до сих пор:

Получил копию библиотеки DLL проекта как в рабочем и разбитом состоянии. Копирование в рабочую dll, когда оно в состоянии ошибки, кажется, устраняет проблему. Тем не менее, когда мы сравниваем две dlls, они абсолютно одинаковы без различий.

Мы проверили журналы IIS и нет обычных ошибок, которые указывали бы на причину.

Вид в этой точке. У нас есть исправление, как я сказал, но на данный момент ищут спокойствие. У кого-нибудь есть идеи, на что смотреть?

Здесь индекс Действие

public ActionResult Index() 
    {    
     localAdmin = false; 
     if (!UoW.IsStarted) 
     { 
      UoW.Start(); 
     } 
     if (SSDSession.PolicyID > 0) 
     { 
      policyId = SSDSession.PolicyID; 
      return SetPolicyInfo(); 
     } 
     if (Request.Cookies.Get("policyId") != null) 
     { 
      policyId = Convert.ToInt32(Request.Cookies.Get("policyId").Value); 
      SSDSession.PolicyID = policyId; 
     } 
     if (policyId == -1 && SSDSession.User.IsPolicyHolder) 
     {     
      policyId = bobDao.GetPoliciesByOwnerPartyId(SSDSession.User.PartyID).First().PolicyId; 
      SSDSession.PolicyID = policyId; 
      return SetPolicyInfo(); 
     } 
     if (policyId == -1) 
     { 
      if (!System.Web.HttpContext.Current.Request.IsLocal) 
      { 
       return Redirect("/core/PolicySearch.aspx"); 
      } 
      else 
      { 
       policyId = 244; 
       SSDSession.PolicyID = policyId; 
       localAdmin = true; 
       return SetPolicyInfo(); 
      } 
     } 
     else 
     {     
      return SetPolicyInfo(); 
     } 

А вот функция вызывается в конце

private ActionResult SetPolicyInfo() 
    { 
     if (!UoW.IsStarted) 
     { 
      UoW.Start(); 
     } 
     PolicyOverviewModel polOvModel = new PolicyOverviewModel(); 
     polOvModel.PoliciesSummaries = PopulatePolicies(); 
     polOvModel.Policy = _policyDataService.GetPolicyById(policyId); 
     polOvModel.PolicyStatements = polOvModel.Policy.PolicyDocuments.Where(x => x.DocumentType == Core.Acord.Enumeration.DocumentType.POLICY_STATEMENT) 
      .OrderByDescending(x => x.DateCreated).Take(5); 
     polOvModel.PolicyPerformance = _policyDataService.GetPolicyPerformance(policyId, SSDSession.CycleDate); 
     polOvModel.SettledEvents = _policyDataService.GetRecentSettledEvents(policyId, null); 
     polOvModel.PendingEvents = _policyDataService.GetRecentPendingEvents(policyId, null); 
     polOvModel.EventDocId = new List<int>(); 
     polOvModel.PolicyID = policyId.ToString(); 
     foreach (SettledEvent setEvent in polOvModel.SettledEvents) 
     { 
      var settlementDoc = _policyDataService.GetEventConfirmationDocumentByFileName(setEvent.PolicyID, setEvent.EventQueueID.ToString()); 
      if (settlementDoc != null) 
      { 
       polOvModel.EventDocId.Add(settlementDoc.ID); 
      } 
      else 
      { 
       polOvModel.EventDocId.Add(-1); 
      } 
     } 
     return View("Index",polOvModel); 
    } 
+0

Проверено ли все папки в опубликованном пакете все время, когда вы получаете сообщение об ошибке – Saravanan

+0

Да. 404 подходит к действию индекса определенного контроллера. Здесь есть индексный указатель, и весь код находится в dll, чтобы привести к нему. Мы ничего не можем найти. – HarvP

+0

В вашем коде есть какой-либо угловой код, который возвращает неправильный URL-адрес. Можете ли вы поделиться кодом метода действий – Saravanan

ответ

0

Я нашел этот вопрос.

Я захватил копию полной структуры папок на сервере как в рабочих, так и в разбитых состояниях. После сравнения мы обнаружили, что иногда Visual Studio просто не публикует ссылку на DLL. Не уверен, почему у него была эта проблема, но мы обнаружили, что эта ссылка не нужна и работала вокруг нее. Теперь мы опубликовали 10+ раз, и ошибки не произошло.

Смежные вопросы