Razor to String: значение не попадает в ожидаемый диапазон - PullRequest
0 голосов
/ 21 сентября 2018

У меня возникли проблемы с преобразованием бритвы в строку внутри одной из моих задач, метод работает правильно, если он сам по себе является результатом действия, как и в другой части веб-сайта.

Ошибка всегда возникает в части кода Render (это метод GetReportMarkupAsString).

using (var sw = new StringWriter()) {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
                var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw); //Issue here
                viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                return sw.GetStringBuilder().ToString();
            }

Это потому, что это часть задачи и из-за этого возникает проблема, приводящая к результату?

var saveTask = System.Threading.Tasks.Task.Run(async () => {
                    await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(10));
                    return GetIdForUploading(PortalContext, command, ctx);
            }).ContinueWith(x => {
                System.Runtime.Remoting.Messaging.CallContext.HostContext = ctx;
                var content = GetReportMarkupAsString(x.Result);
                var pdfBytes = PDFFromContent(content, null, null, Request);

                /*Extra code that sends up the pdfBytes, never reached of course.*/
                return JsonSuccess();
            });

Несколько вещей, на которые стоит обратить внимание, причина, по которой я жду 10 секунд, поскольку это быстрый и грязный способ убедиться, что у данных, которые я хочу получить дальше по цепочке выполнения в моем ActionResult, было время длясохранить данные в моей локальной БД (используемый метод ничего не возвращает, поэтому я не уверен, смогу ли я заполнить пустоту в задаче).Передача контекста ctx в System.Runtime.Remoting.Messaging.CallContext.HostContext была связана с тем, что внутри Задачи текущий http-контекст становится нулевым, это плохо, так как он мне нужен для запросов LINQ.

...