C# 尝试访问ViewBag属性将关闭我的应用程序

C# 尝试访问ViewBag属性将关闭我的应用程序,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我不明白为什么我的应用程序崩溃了。这是我在控制器中的操作: public ActionResult AttachmentsPartial(Guid processId) { var staff = GetCurrentStaff(); var process = Db.Processes.Include(nameof(Stages)).FirstOrDefault(p => p.Id == processId); if (process != null &

我不明白为什么我的应用程序崩溃了。这是我在控制器中的操作:

public ActionResult AttachmentsPartial(Guid processId)
{
    var staff = GetCurrentStaff();
    var process = Db.Processes.Include(nameof(Stages)).FirstOrDefault(p => p.Id == processId);

    if (process != null && staff != null)
    {
        var stages = process.Stages.ToList();
        ViewBag.Stages = stages;
        var files = new List<AttachmentViewModel<Guid>>();

        foreach (var stage in stages)
        {
            //***Some code***
            files.AddRange(items);
        }

        return PartialView("_AttachmentsPartial", files);
    }

    return PartialView("_AttachmentsPartial");
}
公共操作结果附件(Guid processId) { var staff=GetCurrentStaff(); var process=Db.processs.Include(nameof(Stages)).FirstOrDefault(p=>p.Id==processId); if(进程!=null&&staff!=null) { var stages=process.stages.ToList(); ViewBag.Stages=Stages; var files=新列表(); foreach(阶段中的var阶段) { //***一些代码*** 文件.AddRange(项目); } 返回部分视图(“附件”,文件); } 返回局部视图(“附件”); } 我的看法是:

@model List<AttachmentViewModel<Guid>>

@using PM.Models;
@using PM.Resources.Strings;
@using PM.Utils;

@{
    List<Stages> stages = ViewBag.Stages; // This crashes here
}
@型号列表
@使用PM.Models;
@使用PM.Resources.Strings;
@使用PM.Utils;
@{
List stages=ViewBag.stages;//此处崩溃
}
早些时候,它因StackOverflowException而崩溃,但现在它什么也不输出,只需完成应用程序即可。

我试图调试这段代码,但当我试图访问
ViewBag.Stages
时,它崩溃了。即使我尝试只在调试器中进行调试。

这是一个我经常使用的函数,用于在加载分区等时查找错误,这些错误似乎没有任何跟踪

在Global.asax.cs中创建:

 protected void Application_Error()
 {
    Exception exception = Server.GetLastError();

    Response.Clear();
    Server.ClearError();

    HttpException ex = exception as HttpException;

    var test = ex.GetHttpCode();
}

我只是在异常上放置了一个断点,当它抛出时将鼠标悬停在它上面。它通常会告诉我出了什么问题。

您是否尝试将数组分配给列表

List<Stages> stages = ViewBag.Stages;

您需要强制转换它(
ViewBag
是动态的)-
List stages=ViewBag.stages as List
并且您需要测试
null
,因为您的控制器只在
if
块中设置它。@StephenMuecke,它不需要强制转换,如果是
null
,则此代码必须使
stages
仅等于
null
,不会使应用程序崩溃。但它不是
null
,因为我在我的控制器中检查了它。您是否尝试在Global.asax中的应用程序中捕获错误?@AnimusMiles miltis,不,我没有。我甚至不知道它)@AnimusMiles Militis,它不会输出任何错误。不)我复制了旧的源代码。只是我试着把它换成一个数组,但还是不起作用。
Stages[] stages = ViewBag.Stages;