2015-10-15 2 views
0

Я использую 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 каталога для полного управления для пользователей пула приложений, а также

+0

Он уверен, звучит как вопрос разрешения. Как насчет этого ответа, чтобы настроить IIS? http://stackoverflow.com/questions/26823149/iis-localsystem-only-will-run-my-exe – gardarvalur

ответ

0

у меня был похож и обнаружил, что this опубликовано сообщение, которое на странице говорит об обмене файлом .exe на вашем производственном сервере с помощью ссылки ниже. Это исправили проблему для меня

Вот ссылка https://drive.google.com/file/d/0BzI_u_O3vUM1aEppb3ZVZXNsc28/view скачать