首页 > 解决方案 > 如何在 MVC 核心 c# 中使用 SaveOnServerPath Rotativa?

问题描述

我想ViewAsPdf用在服务器路径上保存文件但不能在 MVC 核心中工作

我的代码

var pdfname = String.Format("{0}.pdf", Guid.NewGuid().ToString());
var path = Path.Combine(@"MyPathProject\wwwroot\doc\Claim\Request", pdfname);
path = Path.GetFullPath(path);
var pdfResult = new ViewAsPdf
{
     ViewName = "_ToPDF",
     Model = memo,
     FileName = pdfname,
     SaveOnServerPath = path
};

启动.cs

配置功能

...
RotativaConfiguration.Setup(env.WebRootPath);
...

我的代码没有任何错误但文件未保存

标签: c#pdfasp.net-core-mvcrotativa

解决方案


如果您使用 asp.net core 3.0 或更高版本,您可以尝试将其注入IWebHostEnvironment到控制器类中,然后您可以使用它IWebHostEnvironment.WebRootPath来获取当前的 Web 根路径“wwwrot”。

更多细节,您可以参考下面的测试演示

public class HomeController : Controller {
    private IWebHostEnvironment _hostingEnvironment;

    public HomeController(IWebHostEnvironment environment) {
        _hostingEnvironment = environment;
    }

    [HttpGet]
    public IActionResult Get() {
          var path = Path.Combine(_hostingEnvironment.WebRootPath, @"doc\Claim\Request\Sample.pdf");
        return View();
    }
}

结果:

在此处输入图像描述


推荐阅读