Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用RazorViewToStringRender和ServiceStack呈现razor页面_Macos_Razor_.net Core_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Macos,Razor,.net Core,servicestack" /> servicestack,Macos,Razor,.net Core,servicestack" />

Macos 使用RazorViewToStringRender和ServiceStack呈现razor页面

Macos 使用RazorViewToStringRender和ServiceStack呈现razor页面,macos,razor,.net-core,servicestack,Macos,Razor,.net Core,servicestack,我正在尝试呈现一个razor页面,以将其作为电子邮件模板发送。我正在Razor库中添加视图,并尝试使用此工具从ServiceStack项目中呈现这些视图。我得到以下错误: Application startup exception: System.AggregateException: One or more errors occurred. (Unable to find view '/Test.cshtml'. The following locations were searched: /

我正在尝试呈现一个razor页面,以将其作为电子邮件模板发送。我正在Razor库中添加视图,并尝试使用此工具从ServiceStack项目中呈现这些视图。我得到以下错误:

Application startup exception: System.AggregateException: One or more errors occurred. (Unable to find view '/Test.cshtml'. The following locations were searched:
/Test.cshtml)
---> System.InvalidOperationException: Unable to find view '/Test.cshtml'. The following locations were searched:
/Test.cshtml
 at web.RazorTemplates.RazorViewToStringRenderer.FindView(ActionContext actionContext, String viewName) in /Users/herber/Documents/repos/tests/web/web.RazorTemplates/RazorViewToStringRenderer.cs:line 86
 at web.RazorTemplates.RazorViewToStringRenderer.RenderViewToStringAsync[TModel](String viewName, TModel model) in /Users/herber/Documents/repos/tests/web/web.RazorTemplates/RazorViewToStringRenderer.cs:line 39
 --- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()
at web.AppHost.Configure(Container container) in /Users/herber/Documents/repos/tests/ss-razor-library/web/web/Startup.cs:line 65
at ServiceStack.ServiceStackHost.Init() in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.cs:line 282
at ServiceStack.NetCoreAppHostExtensions.UseServiceStack(IApplicationBuilder app, AppHostBase appHost) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\AppHostBase.NetCore.cs:line 333
at web.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in /Users/herber/Documents/repos/tests/ss-razor-library/web/web/Startup.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.WebHost.BuildApplication()
    crit: Microsoft.AspNetCore.Hosting.WebHost[6]
    Application startup exception
    System.AggregateException: One or more errors occurred. (Unable to find view '/Test.cshtml'. The following locations were searched:
    /Test.cshtml)
    ---> System.InvalidOperationException: Unable to find view '/Test.cshtml'. The following locations were searched:
    /Test.cshtml
应用程序启动异常:System.AggregateException:发生一个或多个错误。(找不到视图'/Test.cshtml'。搜索了以下位置:
/Test.cshtml)
--->System.InvalidOperationException:找不到视图“/Test.cshtml”。搜索了以下地点:
/Test.cshtml
在/Users/herber/Documents/repos/tests/web/web.RazorTemplates/razorViewToStringRender.FindView(ActionContext ActionContext,String viewName)中的web.RazorTemplates.razorViewToStringRender.cs:第86行
在/Users/herber/Documents/repos/tests/web/web.RazorTemplates/RazorViewToStringRender.RenderViewToStringSync[TModel](字符串视图名,TModel模型)中的web.RazorTemplates/RazorViewToStringRender.cs:第39行
---内部异常堆栈跟踪的结束---
位于System.Threading.Tasks.Task`1.GetResultCore(布尔waitCompletionNotification)
在System.Threading.Tasks.Task`1.get_Result()中
在/Users/herber/Documents/repos/tests/ss razor library/web/web/Startup.cs中的web.AppHost.Configure(Container-Container)处:第65行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.cs中的ServiceStack.ServiceStackHost.Init()处:第282行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\AppHostBase.NetCore.cs中的ServiceStack.NetCoreAppHostExtensions.UseServiceStack(IAApplicationBuilder应用程序,AppHostBase appHost)中:第333行
在/Users/herber/Documents/repos/tests/ss razor library/web/web/Startup.cs:line 44中的web.Startup.Configure(IApplicationBuilder应用程序,IWebHostEnvironment环境)处
---来自引发异常的上一个位置的堆栈结束跟踪---
位于Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder应用程序)
在Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.c_uuDisplayClass0_0.g_uuMiddleWareFilterBuilder | 0(IAApplicationBuilder builder)
在Microsoft.AspNetCore.HostFilteringStartupFilter.c__DisplayClass0_0.b_0(IApplicationBuilder应用程序)上
在Microsoft.AspNetCore.Hosting.WebHost.BuildApplication()上
crit:Microsoft.AspNetCore.Hosting.WebHost[6]
应用程序启动异常
System.AggregateException:发生一个或多个错误。(找不到视图'/Test.cshtml'。搜索了以下位置:
/Test.cshtml)
--->System.InvalidOperationException:找不到视图“/Test.cshtml”。搜索了以下地点:
/Test.cshtml
回购协议可以找到。出于测试目的,我正在尝试从应用程序类呈现模板


我可以从常规的.net核心应用程序呈现模板,但不能从ServiceStack应用程序呈现模板。可以找到常规.net核心应用程序上工作示例的回购。渲染是在

上执行的。这些示例不同,您是从MVC控制器渲染的:

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;
    private readonly IRazorViewToStringRenderer _razorRenderer;

    public IndexModel(ILogger<IndexModel> logger, IRazorViewToStringRenderer razorRenderer)
    {
        _logger = logger;
        _razorRenderer = razorRenderer;
    }

    public void OnGet()
    {
        var body =  _razorRenderer.RenderViewToStringAsync("/Test.cshtml",new TestModel{Message = "World"}).Result;
        Console.WriteLine(body);
    }
}
公共类索引模型:PageModel
{
专用只读ILogger\u记录器;
私有只读IRazorViewToStringRenderer;
公共索引模型(ILogger记录器,Irazorviewtostringer Razorrender)
{
_记录器=记录器;
_Razorrender=Razorrender;
}
公共互联网
{
var body=_razorrender.RenderViewToStringAsync(“/Test.cshtml”,新的TestModel{Message=“World”});
控制台。写入线(主体);
}
}
vs在应用程序初始化之前启动时:

public override void Configure(Container container)
{
    SetConfig(new HostConfig
    {
        DefaultRedirectPath = "/metadata",
        DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false)
    });

    var razorRenderer = container.Resolve<IRazorViewToStringRenderer>();
    var body =  razorRenderer.RenderViewToStringAsync("/Test.cshtml",new TestModel()).Result;
    Console.WriteLine(body);
}
public override void Configure(容器)
{
SetConfig(新主机配置)
{
DefaultRedirectPath=“/metadata”,
DebugMode=AppSettings.Get(nameof(HostConfig.DebugMode),false)
});
var razorrender=container.Resolve();
var body=razorrender.RenderViewToStringAsync(“/Test.cshtml”,new TestModel()).Result;
控制台。写入线(主体);
}
因为您试图使用MVC的Razor实现,而不是在MVC控制器或Razor页面中呈现它,而不是在ServiceStack AppHost或服务中呈现它,该服务具有自己的Razor实现,以便在使用自己的Razor的ServiceStack服务中使用。如果您对使用ServiceStack.Razor感兴趣,请参阅项目模板以获取有效配置


尽管它比Ra剃刀更简单、更干净、更灵活,而且实际上被设计成在A中使用,但是你也应该考虑ServestAck来呈现独立的模板,这里是一个.< /P>谢谢你的响应@ Mythz。我会试试看,剧本看起来很棒。我还需要管理多种语言,在#Script?@herbergt不,没有资源文件支持,我从不使用内置的Lang资源支持&历史上,我只是手动编码文本替换。通常通过调用默认英文文本(+某些复数上下文)的方法,当短语存在于目标语言中时,可以将其替换掉。感谢@mythz,我们使用了#脚本,可以完美地用于电子邮件模板,而不需要mvc依赖项。