【问题标题】:Rendering a ServiceStack Razor view programmatically以编程方式呈现 ServiceStack Razor 视图
【发布时间】:2018-08-04 23:52:06
【问题描述】:

我正在尝试在服务器上以编程方式呈现 ServiceStack Razor 页面(因此我可以通过电子邮件发送它)。我正在关注https://groups.google.com/forum/#!topic/servicestack/RqMnfM73ic0 帖子上的信息,但是当我使用 cshtml 文件的有效路径调用“AddPage”方法时,它会失败。

var response = svc.Get(oReq);

        var razor = TryResolve<RazorFormat>();
        var path = @"C:\GetOrderResponse.cshtml";
        var razorPage = razor.AddPage(path);

这会引发参数异常并显示以下消息:

第二个路径片段不能是驱动器或 UNC 名称。 参数名称:path2

 at System.IO.Path.InternalCombine(String path1, String path2)
 at System.IO.FileSystemEnumerableIterator`1.GetFullSearchString(String fullPath, String        searchPattern)
  at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
  at System.IO.DirectoryInfo.InternalGetDirectories(String searchPattern, SearchOption searchOption)
at ServiceStack.VirtualPath.FileSystemVirtualDirectory.EnumerateDirectories(String dirName)
at ServiceStack.VirtualPath.FileSystemVirtualDirectory.GetDirectoryFromBackingDirectoryOrDefault(String dName)
at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.GetFile(Stack`1 virtualPath)
at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.GetFile(String virtualPath)
at ServiceStack.VirtualPath.AbstractVirtualPathProviderBase.GetFile(String virtualPath)
at ServiceStack.VirtualPath.MultiVirtualPathProvider.GetFile(String virtualPath)
at ServiceStack.Razor.Managers.RazorViewManager.GetVirutalFile(String ospath)
at ServiceStack.Razor.Managers.RazorViewManager.AddPage(String filePath)
at ServiceStack.Razor.RazorFormat.AddPage(String filePath)

【问题讨论】:

  • 您是否尝试从 ServiceStack 服务中执行此操作?该页面是否已经存在于 /Views/ 下?

标签: servicestack


【解决方案1】:

如果它在/Views/ 下,您可能不想添加应该已经添加的页面。相反,您可以按名称解析现有页面并将其呈现为 html:

var razor = HostContext.GetPlugin<RazorFormat>();
var orderPage = razor.GetViewPage("GetOrderResponse");
email.BodyHtml = razor.RenderToHtml(orderPage, order);

【讨论】:

  • 从 v4.0.15 开始,这是否已损坏?一直工作正常,周末升级了,GetPageByName 现在找不到任何视图。
  • @Gumzle 仍然对我有用。您是否在?debug=requestinfo 中收到任何启动错误。请参阅有关 RequestInfo plugin 的调试信息。
  • 很好的提示 - 急切 - 'System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=e06fbc6124f57c43' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。会挖。再次感谢
  • 这个方法从 4.0.16 中消失了——我需要做点别的吗?
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 2013-04-15
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 2012-10-08
相关资源
最近更新 更多