【发布时间】:2019-03-08 16:57:25
【问题描述】:
我所有的控制器动作都呈现正常,除了一个。
我找到了与 IIS express 相关的其他解决方案,但是这是在服务器 2012 上运行的。
这里是控制器动作:
public ActionResult Index()
{
try
{
var viewModels = GetHostInfoViewModelList();
return View(viewModels);
}
catch (Exception ex)
{
ex.ReportError();
return new HttpStatusCodeResult(404,$"{ex.Message}|{ex.InnerException}");
}
}
这里是GetHostInfoViewModelList:
public IEnumerable<ViewModelHostInfo> GetHostInfoViewModelList()
{
using (var db = new WINCMUEntities())
{
try
{
//join host info with sleep status
var sleepRecords = db.SleepTrackings.ToList();
var hostInfo = db.WINCMU_HostInfo.ToList();
var viewModels = new List<ViewModelHostInfo>();
hostInfo.ForEach(x =>
{
viewModels.Add(new ViewModelHostInfo()
{
HostName = x.HostName ?? "Not Found",
Id = x.ID,
newsystem = x.newsystem,
Zone = x.Zone ?? "Not Found",
IsSleeping = sleepRecords.FirstOrDefault(s => s.HostName.ToLower() == x.HostName.ToLower())
?.IsCurrentlySleeping ?? false,
IP_address = x.IP_address ?? "Not Found",
ReportingArea = x.ReportingArea ?? "Not Found",
agent_active = x.agent_active,
date_added = x.date_added,
is_agent = x.is_agent
});
});
return viewModels;
}
catch (Exception ex)
{
ex.ReportError();
throw;
//return new List<ViewModelHostInfo>();
}
}
}
这是完整的错误文本:
[ArgumentOutOfRangeException:指定的参数超出了有效值的范围。
参数名称:值]
System.Web.HttpResponse.set_StatusDescription(字符串值)+4538824
System.Web.Mvc.HttpStatusCodeResult.ExecuteResult(ControllerContext 上下文)+109
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +88
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 过滤器,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult)+775
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 filters, ActionResult actionResult) +81
System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult) +188
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +26
System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +68
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +40
System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +68
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +602
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep 步骤) +195
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +128
【问题讨论】:
-
GetHostInfoViewModelList()的源码是什么?你的问题可能在那里 -
您是否尝试过单步执行您的代码并查看它到底在哪里崩溃?
-
谢谢瑞!该方法中有 throw 关键字,它破坏了一切。
标签: c# asp.net-mvc