使用Razor View Engine和Nancy,.cshtml不是可用的扩展

时间:2015-10-05 17:15:19

标签: c# razor nancy razorengine

我正在使用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吗?

4 个答案:

答案 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 WikiView 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文件,但这至少不能单独解决该问题。