NullReferenceException в SiteLayout.cshtml с FileResult

Для нашего клиента у нас есть действие MVC, которое возвращает PDF-файлы. Следующий код является логикой для возврата FileResult.

public FileResult DownloadAbsFile(string id)
{
    String path = GetPathNameByID(id);
    if (System.IO.File.Exists(path))
    {
        byte[] fileBytes = System.IO.File.ReadAllBytes(path);
        string fileName = System.IO.Path.GetFileName(path);
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
    }
    else
    {
        return null;
    }
}

Когда я запрашиваю PDF-файл, используя правильный URL-адрес, большую часть времени это не проблема. Однако некоторые пользователи получают ошибку. Ошибка озадачивает меня довольно долгое время. Ошибка, которую я получаю, заключается в следующем.

Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object
at ASP._Page_Views_Shared_SiteLayout_cshtml.Execute() in 
xxx\Views\Shared\SiteLayout.cshtml:line xxx
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext 
pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.WebPages.WebPageBase.<>c__DisplayClass3.
<RenderPageCore>b__2(TextWriter writer)
at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
at System.Web.WebPages.WebPageBase.Write(HelperResult result)
at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, 
Action`1 body)
at System.Web.WebPages.WebPageBase.PopContext()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext 
pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter 
writer, Object instance)
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, 
TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at 
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext 
controllerContext, ActionResult actionResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.
<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
at 

В определенной строке в cshtml он пытается получить доступ к PageTitle в ViewBag, который не был установлен. Это значение никогда не устанавливается, поэтому я получаю это. Но то, что я не понимаю, это то, почему он пытается визуализировать вид в первую очередь.

Кто-нибудь может мне помочь с этим?

0 ответов

Другие вопросы по тегам