ArgumentOutOfRangeException, IIS express на сервере 2012 - PullRequest
0 голосов
/ 03 октября 2018

Все мои действия контроллера выполняются нормально, кроме одного.

Я нашел другие решения, относящиеся к 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.Controller *ctionInvist_1RistInt32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +775 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters (ControllerContext controllerContext, IList 1 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.WrappedAsyncVoid 1.CallEntT.EntEnt.EntEnt.Ent.Ent.Ent.Ent.Egn.Egn.Egn.Ent.Egn.Egn.Egn.Ent.Egn.Egn.Ent.Egn.Egn.Egn.EnDIAsyncResult asyncResult) +52 System.Web.Mvc.Async.WrappedAsyncVoid 1.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.WrappedAsyncVoid 1.CallEndDelegate (IAsyncResult asyncResult) +68 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncRecWeb.Web.Web.Sec.Sec.Sec.Sec .Sec .Sec .Sec .Sec .Sec .Sec .Sec. .Sext.Sec .Sec. .W .Sell.WS) .Sec..HttpApplication.IExecutionStep.Execute () +602 System.Web.HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +195 System.Web.HttpApplication.ExecuteStep (IExecustep Шаг шага, булево и завершено синхронно) + 128

Error Screenshot

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Это было нанесено самому себе.

GetHostInfoViewModelList выдал исключение.

0 голосов
/ 03 октября 2018

В сообщении об ошибке указывается, что при установке состояния ответа возникает исключение:

[ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений.Имя параметра: значение] System.Web.HttpResponse.set_StatusDescription (строковое значение) + 4538824

Ваш код не устанавливает стандартное описание для результата состояния 404:

return new HttpStatusCodeResult(404,$"{ex.Message}|{ex.InnerException}");

Измените это на:

return new HttpStatusCodeResult(404,"Not Found");

Вы можете опустить описание, но если вы его зададите, оно должно соответствовать коду состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...