Я использую Rotativa для создания pdf-файла моего Razor View. Он отлично работает на моей локальной машине, но когда я публикую свой сайт в веб-хостинга и попытаться создать PDF я получил следующее сообщение об ошибке:Работа в формате PDF работает на локальном хосте, но не на веб-хостинге
контроллер Действие Метод
//Generate and output the View pdf file
public ActionResult PDFCatalogue(int id)
{
var productList = db.ProductImages.Include("Products")
.Select(m => new ProductDisplayViewModel
{
ProductId = m.Id,
Name = m.Products.Name,
ImageUrl = m.URL,
Thumbnail = m.URL.Replace(".jpg", "-thumb.jpg"),
CategoryId = m.Products.CategoryId,
CategoryName = m.Products.Category.CategoryName,
Sizes=m.Products.Sizes
}).Where(i => i.CategoryId == id).OrderByDescending(m => m.ProductId).ToList();
TempData["CategoryName"] = db.Category.Where(m => m.Id == id).Select(k => k.CategoryName).SingleOrDefault();
if (productList == null)
{
return HttpNotFound();
}
return View("~/Views/Catalogue/PDFCatalogue.cshtml", productList);
//return new RazorPDF.PdfResult(productList, "~/Views/Catalogue/PDFCatalogue.cshtml");
//return new MvcRazorToPdf.PdfActionResult("~/Views/Catalogue/PDFCatalogue.cshtml", productList);
}
public ActionResult GeneratePDF(int id=0)
{
return new Rotativa.ActionAsPdf("PDFCatalogue", new { id = id });
}
Ошибка сервера в «/ ' Заявка. Ошибка необработанного выполнения Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.
Exception Details: System.Exception:
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[Exception]
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches, String html) +975
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches) +50
Rotativa.AsPdfResultBase.CallTheDriver(ControllerContext context) +96
Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +250
Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +66
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +23
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +176
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +75
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +99
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651796
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
PS: Rotativa сделать каталог Rotativa
в корневом каталоге приложения, где он ставит wkhtmltopdf.exe
я также установить разрешение Rotativa
каталога для полного управления для пользователей пула приложений, а также
Он уверен, звучит как вопрос разрешения. Как насчет этого ответа, чтобы настроить IIS? http://stackoverflow.com/questions/26823149/iis-localsystem-only-will-run-my-exe – gardarvalur