2

我在我的 ASP.net MVC 项目中使用Rotativa 。我使用 ViewAsPDF 作为返回类型。问题是在本地环境中一切运行顺利,css 样式正确应用于 PDF,但是当我在 prod 服务器上部署我的应用程序并尝试获取 PDF 文件时,服务器仅在不应用 CSS 样式的情况下在 5 分钟后返回它. 如果我将风格直接赋予属性<td style="..."> ,它会起作用。我在哪里可以找到问题,以及如何解决?

谢谢!

更新: 如果我删除指向 CSS 样式表的链接,它的工作速度会更快:

更新: 如果我在我的任何网站页面上手动运行 wkhtmltopdf.exe,我会得到:

%computername% | D:\Projects\myapp\trunk\WebSite\Rotativa>wkhtmltopdf http://myappp.com pdf.pfd
Loading pages (1/6)
Error: Failed loading page http://finishgenius.tizbi.com (sometimes it will work just to ignore this error with --load-error-handling ignore)

更新: 如果我将 ViewAsPdf 方法更改为 ActionAsPDF 我收到错误:

Server Error in '/' Application.

Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Exception: Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)


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: Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)
]
   Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches, String html) +570
   Rotativa.AsPdfResultBase.CallTheDriver(ControllerContext context) +26
   Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +128
   Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
   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() +9633216
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18067 
4

2 回答 2

1

终于找到了我问题的根源。我试图从服务器的浏览器访问我的网站,我发现服务器看不到自己。我用正确的 IP 地址更新了 hosts.txt 文件,这解决了我的问题。希望这会对某人有所帮助!谢谢!

于 2014-10-23T12:38:24.663 回答
0

当您的站点使用 Windows 身份验证时,可能会发生这种情况的另一个可能原因。

您需要在 web.config 中授予对 CSS 文件的访问权限,如下所示:

<location path="content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
于 2016-08-22T16:11:59.540 回答