我正在使用Mac上的Nancy工作,我正在使用标准文本编辑器(Atom)编辑我的项目。我想使用Razor View Engine,我想弄清楚如何。
我包括
Nancy.Viewengines.Razor": "1.3.0"
在我的依赖项中
project.json文件
using Nancy.ViewEngines.Razor;
顶部的 HomeModule.cs
文件
@inherits
Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task>
在View的顶部,我想使用Razor
(task_added.cshtml
),扩展名为.cshtml
但是当我加载项目时,我收到错误:
Nancy.RequestExecutionException:哦,不! ---&GT; Nancy.ViewEngines.ViewNotFoundException:无法找到view&#39; task_added.cshtml&#39; 目前可用的视图引擎扩展:sshtml,html,htm```
我还应该包含什么来识别.cshtml吗?
答案 0 :(得分:4)
搞定了!不幸的是,视图引擎是基于不能在Mac上运行的代码构建的。此解决方案仅适用于Windows。
我将以下代码添加到我的配置文件(Startup.cs
)中,并从Razor Engine Wiki翻译过来。
public class RazorConfig : IRazorConfiguration
{
public IEnumerable<string> GetAssemblyNames()
{
return null;
}
public IEnumerable<string> GetDefaultNamespaces()
{
return null;
}
public bool AutoIncludeModelNamespace
{
get { return false; }
}
}
每个视图顶部的行@inherits
Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task>
也是不必要的。
答案 1 :(得分:2)
您是否已阅读:Razor Engine Wiki和View location conventions?
您是否有机会在Bootcamp或Windows计算机上试用您的代码以查看它是否特定于Mac?大概你在Mac上运行Mono
,你的Mac上还有其他项目/教程吗?
您能否详细说明您有什么/未尝试过的?您是否有教程示例正常工作?
猜测一下,我说你的视图文件(.cshtml)不是Nancy正在寻找它们的地方。您的文件夹结构是什么?
修改强>
抱歉,我已经再次阅读,显然南希并没有拿起剃须刀引擎(正如它明确指出的那样)。你不需要HomeModule中的using语句,那里没有引用。
您是否仔细检查了Nancy的项目参考,并检查它是否已被复制到bin文件夹中?
启用诊断功能(Diags)并查看“信息”&#39;面板,在“已加载的视图引擎”下 - 这将确认加载了哪些视图引擎,尽管它无疑会说同样的事情。
鉴于Nancy通过扫描加载的appdomain和私有bin目录来查找引用nancy并自动注册IViewEngine
类型的任何dll,自动定位视图引擎,强烈建议Razor程序集不是在bin文件夹中,或类似的东西。
答案 2 :(得分:0)
我遇到了同样的问题。我在顶级的Windows服务上使用Nancy self host。我的问题是我只有一个核心应用程序的引用,但没有引用我的Windows服务项目中的Nancy.ViewEngines.Razor.dll。
要修复它,我将Nancy.ViewEngines.Razor.dll refence添加到我的WindowsService项目
答案 3 :(得分:0)
这是我的故事,以及在有人遇到相同问题的情况下我如何解决该问题:
我编译了我的Nancy应用,并且在我的开发计算机(Windows 10)上运行良好。
我通过Google云端硬盘将应用程序发送到另一台计算机上,我的客户在他们的计算机(也是Windows 10)上观察到与原始海报相同的错误。
此问题的原因是Windows 阻止了我的客户计算机上的 Nancy.ViewEngines.Razor.dll 文件,因为他们已经从Internet下载了我的代码。 / p>
在客户端计算机上,我从文件 properties 上下文菜单中取消阻止该文件,此问题已解决。
P.S。我还首先取消阻止了cshtml文件,但这至少不能单独解决该问题。