将 Razor View Engine 与 Nancy 一起使用,.cshtml 不是可用的扩展名
Using Razor View Engine with Nancy, .cshtml not an available extension
我正在 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>
在视图的顶部,我想在其中使用 Razor
(task_added.cshtml
),扩展名为 .cshtml
但是当我加载项目时,出现错误:
Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'task_added.cshtml'
Currently available view engine extensions: sshtml,html,htm```
我还应该包含其他任何内容以使其识别 .cshtml 吗?
您是否阅读:Razor Engine Wiki and View location conventions?
您是否有机会在 Bootcamp 或 Windows 机器上试用您的代码,看看它是否是 Mac 特定的?大概你在 Mono
上 运行,因为它在 Mac 上,同样你在 Mac 上有任何其他项目/教程 运行 吗?
您能否提供更多有关您尝试过/未尝试过的内容的详细信息?教程示例是否有效?
我猜测,您的视图文件 (.cshtml) 不在 Nancy 寻找它们的地方。你的文件夹结构是什么?
编辑
抱歉,我又看了一遍,显然 Nancy 没有使用剃须刀引擎(正如它明确说明的那样)。您不需要 HomeModule 中的 using 语句,那里没有引用。
您是否仔细检查了 Nancy 的项目参考并检查它是否已复制到 bin 文件夹中?
启用诊断 (Diags) 并查看 'Information' 面板,在 'Loaded View Engine' 下-这将确认加载了哪些视图引擎,尽管它无疑会说同样的事情.
鉴于 Nancy 通过扫描加载的 appdomain 和私有 bin 目录以查找任何引用 nancy 的 dll 并自动注册 IViewEngine
类型来自动定位视图引擎,这强烈表明 Razor 程序集不是在 bin 文件夹或类似的文件夹中。
成功了!不幸的是,视图引擎建立在不会 运行 on a 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>
也是不必要的。
我遇到了同样的问题。我在 top shelf windows 服务上使用 Nancy self host。我的问题是我只有对核心应用程序的引用,但没有对 windows 服务项目中的 Nancy.ViewEngines.Razor.dll 的引用。
为了修复它,我将 Nancy.ViewEngines.Razor.dll 引用添加到我的 WindowsService 项目
这是我的故事以及我是如何修复它的,以防有人遇到同样的问题:
我编译了我的 Nancy 应用程序,它在我的开发计算机上运行良好 (Windows 10)。
我通过 Google 驱动器将应用程序发送到另一台计算机,我的客户在他们的计算机上发现了与此处的原始发布者相同的错误(也是 Windows 10)。
问题的原因是 Windows 阻止了 文件 Nancy.ViewEngines.Razor.dll 在我客户的计算机上,因为他们从网上下载了我的代码。
在客户端计算机上,我从文件 属性 上下文菜单中取消阻止文件,问题已解决。
P.S。我还先解除了对 cshtml 文件的阻止,但这并没有解决问题,至少它本身是这样。
我正在 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>
在视图的顶部,我想在其中使用 Razor (task_added.cshtml
),扩展名为 .cshtml
但是当我加载项目时,出现错误:
Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'task_added.cshtml' Currently available view engine extensions: sshtml,html,htm```
我还应该包含其他任何内容以使其识别 .cshtml 吗?
您是否阅读:Razor Engine Wiki and View location conventions?
您是否有机会在 Bootcamp 或 Windows 机器上试用您的代码,看看它是否是 Mac 特定的?大概你在 Mono
上 运行,因为它在 Mac 上,同样你在 Mac 上有任何其他项目/教程 运行 吗?
您能否提供更多有关您尝试过/未尝试过的内容的详细信息?教程示例是否有效?
我猜测,您的视图文件 (.cshtml) 不在 Nancy 寻找它们的地方。你的文件夹结构是什么?
编辑
抱歉,我又看了一遍,显然 Nancy 没有使用剃须刀引擎(正如它明确说明的那样)。您不需要 HomeModule 中的 using 语句,那里没有引用。
您是否仔细检查了 Nancy 的项目参考并检查它是否已复制到 bin 文件夹中?
启用诊断 (Diags) 并查看 'Information' 面板,在 'Loaded View Engine' 下-这将确认加载了哪些视图引擎,尽管它无疑会说同样的事情.
鉴于 Nancy 通过扫描加载的 appdomain 和私有 bin 目录以查找任何引用 nancy 的 dll 并自动注册 IViewEngine
类型来自动定位视图引擎,这强烈表明 Razor 程序集不是在 bin 文件夹或类似的文件夹中。
成功了!不幸的是,视图引擎建立在不会 运行 on a 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>
也是不必要的。
我遇到了同样的问题。我在 top shelf windows 服务上使用 Nancy self host。我的问题是我只有对核心应用程序的引用,但没有对 windows 服务项目中的 Nancy.ViewEngines.Razor.dll 的引用。
为了修复它,我将 Nancy.ViewEngines.Razor.dll 引用添加到我的 WindowsService 项目
这是我的故事以及我是如何修复它的,以防有人遇到同样的问题:
我编译了我的 Nancy 应用程序,它在我的开发计算机上运行良好 (Windows 10)。
我通过 Google 驱动器将应用程序发送到另一台计算机,我的客户在他们的计算机上发现了与此处的原始发布者相同的错误(也是 Windows 10)。
问题的原因是 Windows 阻止了 文件 Nancy.ViewEngines.Razor.dll 在我客户的计算机上,因为他们从网上下载了我的代码。
在客户端计算机上,我从文件 属性 上下文菜单中取消阻止文件,问题已解决。
P.S。我还先解除了对 cshtml 文件的阻止,但这并没有解决问题,至少它本身是这样。