ASP.Net 404有时发布后

时间:2017-01-26 16:03:27

标签: asp.net-mvc publish

我有一个在本地运行良好的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);
    }

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。

我在处于工作状态和损坏状态的服务器上抓取了完整文件夹结构的副本。经过比较,我们发现有时Visual Studio不会发布引用DLL。不确定为什么会遇到这个问题,但我们发现这个引用并不是必需的,并且可以解决它。现在我们发布了10次以上,并且错误没有发生。