有时发布后的 ASP.Net 404
Posted
技术标签:
【中文标题】有时发布后的 ASP.Net 404【英文标题】:ASP.Net 404 After Publish Sometimes 【发布时间】:2017-01-26 16:03:27 【问题描述】:我有一个在本地运行良好的 MVC 项目。将其发布到开发环境时,我们遇到了一个问题,我们在其中一个页面上得到 404。奇怪的是,这只是偶尔发生,我们通常可以通过再次发布来修复它,直到它消失。只有一页会抛出错误。
到目前为止,我们尝试的是:
在工作和损坏状态下获得项目 dll 的副本。当它处于错误状态时复制工作的 dll 似乎可以解决问题。然而,当我们比较这两个 dll 时,它们完全一样,没有任何区别。
我们检查了 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);
【问题讨论】:
你是不是一直检查发布包里的所有文件夹都报错 是的。 404 出现在执行某个控制器的索引操作时。索引视图就在那里,所有代码都在 dll 中以引导它。我们找不到任何丢失的东西。 您的代码中是否有任何极端情况会返回错误的视图 URL。可以分享一下动作方法代码吗 添加了该代码。 404是否有可能是由于policysearch.aspx 【参考方案1】:我发现了问题。
我在服务器上获取了一份完整文件夹结构的副本,其中包括工作状态和损坏状态。经过比较我们发现有时 Visual Studio 只是不会发布参考 DLL。不知道为什么会出现这个问题,但我们发现该引用没有必要并解决了它。现在我们已经发布了 10 多次,并且没有发生错误。
【讨论】:
以上是关于有时发布后的 ASP.Net 404的主要内容,如果未能解决你的问题,请参考以下文章