我在NancyFx中有一个非常简单的模块和视图设置,例如这个;
public class LoginModule : NancyModule
{
public LoginModule()
{
Get["/login"] = _ => View["login", null];
}
}
此页面的视图位于project \ views \ login \ login.cshtml。
中我已经配置了自定义视图约定来尝试解决问题,例如
nancyConventions.ViewLocationConventions.Clear();
nancyConventions.ViewLocationConventions.Add((viewName, model, viewLocationContext) => string.Concat("views/", viewName));
nancyConventions.ViewLocationConventions.Add((viewName, model, viewLocationContext) => string.Concat("views/", viewLocationContext.ModuleName, "/", viewName));
我使用Owin(带有ASP.NET托管包的Nancy和Microsoft软件包)来管理我的web api层。
在本地测试时,应用程序运行正常,但在部署到Azure时失败。
Nancy.RequestExecutionException:哦,不! ---> Nancy.ViewEngines.ViewNotFoundException:无法找到view' login' 目前可用的视图引擎扩展:sshtml,html,htm,cshtml,vbhtml 检查的位置:views / login,views / Login / login
请注意,它记录了我的视图的确切文件夹结构,但由于某些原因,无法找到视图文件。 它注意到支持的视图文件,所以已经拿起了Razor包。
如果我将视图文件移动到\ views文件夹中,这一切都有效,但如果可以的话,我想在逻辑上将文件分开。
使用引用Project.WebApi的Project.Web项目(定义了Nancy引导程序的Owin项目)拆分项目。
在回复另一篇文章here时,我将Owin hander添加到Project.Web web.config文件中。
<handlers>
<add name="Owin" verb="*" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb" />
<add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
</handlers>
但没有成功。
答案 0 :(得分:1)
问题只是HTML文件.cshtml
需要将文件属性中的构建操作从None
更改为Content
才能发布。
按照记录here;
进行工作无 - 文件未包含在项目输出组中,并且未在构建过程中编译。一个示例是包含文档的文本文件,例如自述文件。
内容 - 文件未编译,但包含在内容输出组中。例如,此设置是.htm或其他类型的Web文件的默认值。