使用Razor视图引擎与南希,.cshtml不是一个可用的扩展名
本文关键字:一个 扩展名 引擎 视图 Razor cshtml 使用 | 更新日期: 2023-09-27 18:16:11
我正在Mac上使用Nancy进行一个项目,我正在使用标准文本编辑器(Atom)编辑我的项目。我想使用Razor视图引擎,我正在尝试弄清楚如何使用。
包括Nancy.Viewengines.Razor": "1.3.0"
在我的依赖项项目。json文件using Nancy.ViewEngines.Razor;
在我的HomeModule.cs
的顶部文件@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task>
在视图的顶部,我想使用Razor(task_added.cshtml
),扩展名为。cshtml
但是当我加载项目时,我得到错误:
南希。RequestExecutionException:哦,不!--> nancy . viewengine . viewnotfoundexception:无法定位视图'task_added.cshtml'当前可用的视图引擎扩展名:sshtml,html,htm ' ' '
还有什么我应该包括它来识别。cshtml?
成功了!不幸的是,视图引擎建立在不能在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; }
}
}
每个View顶部的@inherits
Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task>
行也是不必要的。
你读过:Razor Engine Wiki和View location约定吗?
你是否有机会在Bootcamp或Windows机器上试用你的代码,看看它是否特定于mac ?大概你在Mono
上运行,因为它在Mac上,同样你有任何其他项目/教程在你的Mac上运行?
你能提供更多你尝试过/没有尝试过的细节吗?您是否使用了教程示例?
在一个猜测,我会说你的视图文件(.cshtml)不是南希正在寻找他们的地方。你的文件夹结构是怎样的?
编辑
对不起,我又读了一遍,很明显南希没有拿起剃刀引擎(就像它明确说的那样)。你不需要在HomeModule中使用using语句,因为它没有被引用。
你是否再次检查了Nancy的项目参考并检查了它是否已经复制到bin文件夹中了?
启用诊断(Diags)并查看"信息"面板,在"加载的视图引擎"下-这将确认加载了哪些视图引擎,尽管它无疑会说同样的事情。
考虑到Nancy通过扫描加载的appdomain和私有bin目录来自动定位视图引擎,以查找引用Nancy的任何dll,并自动注册IViewEngine
类型,这强烈表明Razor程序集不在bin文件夹中,或者类似的东西
这是我的故事,以及我如何修复它,以防有人有同样的问题:
我编译了我的Nancy应用程序,它在我的开发计算机(Windows 10)上运行良好。
我通过Google Drive将应用程序发送到另一台计算机,我的客户在他们的计算机(也是Windows 10)上观察到与原始海报相同的错误。
问题的原因是Windows 阻止文件 nancy . viewengine . razor .dll在我的客户端计算机上,因为他们从互联网下载了我的代码。
在客户端计算机上,我从file properties上下文菜单中解锁了该文件,问题解决了。
注:我还首先打开了cshtml文件,但这并没有解决这个问题,至少它本身没有。
我也遇到过同样的问题。我正在使用南希自我主机在一个顶级货架的窗口服务。我的问题是我只引用了核心应用程序,但没有引用我的windows服务项目中的nancy . viewengine . razor .dll。
为了解决这个问题,我将nancy . viewengine . razor .dll引用添加到我的WindowsService项目