【问题标题】:Nancy Razor Viewengine not found未找到 Nancy Razor Viewengine
【发布时间】:2013-01-16 11:37:13
【问题描述】:

我正在使用带有 Razor 视图的 Nancy 0.14.1.0。只要我在 VS 2010 中使用内部网络服务器,一切都会好起来的。现在我确实将这些东西部署到了运行 IIS 6 的网络服务器上。路线是

       Get["/api/v1/admin/clients"] = parameters => {
            return View["Admin/view", new DataAccessLayer(Context).admin_get_clients()];
        };

它返回一个客户列表(在这里无关紧要)。

服务器上的目录结构是

斌 内容 共享 |--- _Layout.cshtml 意见 |--- 管理员 |--- 视图.cshtml

我捕捉到的异常是

Nancy.ViewEngines.ViewNotFoundException:无法找到视图“Admin/view”当前可用的视图引擎扩展:sshtml、html、htm 检查的位置:,,,,views/api/Admin/view,api/Admin/view,views/Admin /view,Admin/view 根路径:C:\Inetpub\Websites\Test\api\

我有点担心的是“可用的视图引擎扩展”条目:我在这里缺少 cshtml ......虽然我猜我的 web.config 包含正确的条目:

<compilation debug="true" targetFramework="4.0">
  <buildProviders>
    <add extension=".cshtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyCSharpRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
    <add extension=".vbhtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyVisualBasicRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
  </buildProviders>


</compilation>

后面的 Nancy 模块工作正常:我添加了路线

        Get["/api/v1/admin/clients/{id}"] = parameters => {
            return "Hello";
        };

然后得到“你好”...

有什么提示吗?

【问题讨论】:

    标签: asp.net-mvc razor nancy viewengine


    【解决方案1】:

    您还没有部署 Nancy razor 包,或者由于某种原因它无法加载它(可能缺少依赖项),这就是它没有列出文件类型的原因。

    【讨论】:

    • 部署了 Nancy razor 包?如何?对我来说,我已经从 nuget 安装了Nancy.Viewengines.Razor.1.4.1
    【解决方案2】:

    关闭,但 Nancy 剃须刀包装并没有丢失。 部署了 Nancy razor 软件包。唯一缺少的是 System.Razor.dll。我也部署了它并完成了:)

    【讨论】:

    • 因此“或者由于某种原因无法加载它(可能缺少依赖项)”;-)
    • 你的意思是 System**.Web**.Razor.dll 吗?
    • 不是 OP,但我相信它是 System.Web.Razor.dll。查看我的bin\Release 目录有一个名为Nacy.ViewEngines.Razor.xml 的文件。我在文件中看到了对 System.Web.Razor 命名空间的引用。添加引用,将Copy Local 设置为true,我的问题与OP 相同,得到了解决。
    • 我在应用项目和测试项目中有不同的 System.Web.Razor 版本。升级测试项目中的那个,以匹配应用项目中的那个,解决了这个问题。
    【解决方案3】:

    我发现这个问题在 Nancy 模板项目中仍然存在。您需要删除并重新添加 Nancy nuget 引用。启用包还原似乎还不够。

    【讨论】:

      【解决方案4】:

      我在一个控制台应用程序中遇到了自托管 Nancy 的问题,该应用程序引用了一个单独的 DLL “web”项目。尽管控制台项目引用了 Web 项目,并且 Web 项目引用了适当的 razor 库,但 Razor DLL 并未被复制到输出文件夹。

      由于 razor DLL 是动态加载的,因此它们不会被复制到控制台的输出文件夹中。更多关于潜在问题的讨论:Is "Copy Local" transitive for project references?

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多