我使用的是带有Razor视图的Nancy 0.14.1.0。只要我在VS 2010中使用内部web服务器,事情就会很好。现在我把这些东西部署到我的web服务器上,运行IIS 6。路由为
Get["/api/v1/admin/clients"] = parameters => {
return View["Admin/view", new DataAccessLayer(Context).admin_get_clients()];
};
返回一个客户端列表(这里不重要)。
服务器上的目录结构为
<>之前箱子内容共享|——_Layout.cshtml的观点| - - -管理|——view.cshtml之前我捕获的异常是 <>之前当前可用的视图引擎扩展名:sshtml,html,htm检查的位置:,,,,views/api/Admin/view,api/Admin/view,views/Admin/view,Admin/view根路径:C:InetpubWebsitesTestapi之前让我有点担心的是"可用的视图引擎扩展"条目:我在这里缺少cshtml…虽然我猜是我的网。配置包含正确的条目:
<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 Module工作正常:我已经添加了路由
Get["/api/v1/admin/clients/{id}"] = parameters => {
return "Hello";
};
并得到"Hello"…
提示吗?
您还没有部署Nancy razor包,或者由于某些原因(可能缺少依赖项)无法加载它,这就是为什么它没有列出文件类型的原因。
接近,但南希剃须刀包并没有丢失。部署了南希剃刀包。唯一缺少的是System.Razor.dll。我也部署了它,并完成了:)
我发现这个问题仍然发生在Nancy模板项目中。您需要删除并重新添加Nancy核引用。启用包还原似乎还不够。
我在控制台应用程序中遇到了这个问题,它引用了一个单独的DLL"web"项目。即使控制台项目引用了web项目,并且web项目引用了相应的razor库,razor dll也没有被复制到输出文件夹中。
由于razor dll是动态加载的,所以它们没有被复制到控制台的输出文件夹中。这里有更多关于潜在问题的讨论:是"Copy local"吗?可传递的项目引用?