使用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?

使用Razor视图引擎与南希,.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项目