【问题标题】:How to use the Rotativa.aspnetcore package in Linux Ubuntu OS (asp.net Core 2.1)如何在 Linux Ubuntu OS (asp.net Core 2.1) 中使用 Rotativa.aspnetcore 包
【发布时间】:2018-11-22 07:09:02
【问题描述】:

在Ubuntu中使用Rotativa.aspnetcore包不知道什么问题?

  1. 我使用 Visual Studio 2017 MVC 默认模板。
  2. 使用 nuget Rotativa.aspnetcore (https://www.nuget.org/packages/Rotativa.AspNetCore/)

安装包 Rotativa.AspNetCore -Version 1.1.1

  1. 在 Linux Ubuntu 操作系统中执行 sudo apt-get install Xvfb libfontconfig wkhtmltopdf。 wkhtmltopdf 和 wkhtmltoimage 将其复制到 Web MVC 项目 wwwroot/Rotativa。

  2. 根据Rotativa.aspnetcore Git(https://github.com/webgio/Rotativa.AspNetCore)文件需要配置设置 在 Startup.cs 中完成配置:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...
    
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();
    
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Faceapirequestrecords}/{action=Index}/{id?}");
        });
    
        RotativaConfiguration.Setup(env, "/usr/bin");
    }
    
  3. HomeController 程序代码:

    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    
        public IActionResult DemoViewAsPDF()
        {
            return new ViewAsPdf("Index");
        }
    }
    
  4. 部署和执行 MVC 应用程序。 网址:http://localhost:5000/Home/DemoViewAsPDF

    错误信息:

警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] 无法确定重定向的 https 端口。

失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1] 执行请求时发生未处理的异常。 System.Exception: QXcbConnection: 无法连接到显示器

在 Rotativa.AspNetCore.WkhtmlDriver.Convert(字符串 wkhtmlPath,字符串开关,字符串 html,字符串 wkhtmlExe) 在 Rotativa.AspNetCore.WkhtmltopdfDriver.ConvertHtml(字符串 wkhtmltopdfPath,字符串开关,字符串 html) 在 Rotativa.AspNetCore.ViewAsPdf.CallTheDriver(ActionContext 上下文) 在 Rotativa.AspNetCore.AsResultBase.BuildFile(ActionContext 上下文) 在 Rotativa.AspNetCore.AsResultBase.ExecuteResultAsync(ActionContext 语境) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult 结果) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsyncTFilter,TFilterAsync 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext 语境) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& 作用域, Object& 状态, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext 语境) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(状态和下一个, 范围&作用域,对象&状态,布尔& isCompleted) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() 在 Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext http上下文) 在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext 语境) 在 Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext 上下文)

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi asp.net-core-2.1


    【解决方案1】:

    提前:我没有测试它。

    您正在尝试使用端口 5000 调用 http://localhost:5000/Home/DemoViewAsPDF。Rotativa 尝试重定向到 http***s***://localhost:5000/Home/DemoViewAsPDF。 https的端口不同。因此,您不会得到结果。

    尝试从一开始就使用 https。这可能会解决您的问题。

    您可以通过命令提示符访问程序来测试 Rotativa 是否按预期工作:

    wkhtmltopdf.exe www.samplewebsite.com  outputfolder+filename+extension
    

    【讨论】:

      猜你喜欢
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2020-10-15
      • 2018-11-28
      • 1970-01-01
      • 2019-04-18
      • 2019-02-10
      相关资源
      最近更新 更多