У меня есть проект 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);
}
Проверено ли все папки в опубликованном пакете все время, когда вы получаете сообщение об ошибке – Saravanan
Да. 404 подходит к действию индекса определенного контроллера. Здесь есть индексный указатель, и весь код находится в dll, чтобы привести к нему. Мы ничего не можем найти. – HarvP
В вашем коде есть какой-либо угловой код, который возвращает неправильный URL-адрес. Можете ли вы поделиться кодом метода действий – Saravanan