我正在尝试使用NancyFX的嵌入式视图功能,但无法实现它。我用过example。但是,看起来Nancy并没有使用ResourceViewLocationProvider
来查找我的观点。
我的bootstrapp配置,
protected override void ConfigureApplicationContainer(IKernel existingContainer)
{
base.ConfigureApplicationContainer(existingContainer);
var currentAssembly = GetType().Assembly;
ResourceViewLocationProvider.RootNamespaces.Add(currentAssembly, "Candidate.Nancy.SelfHosted.Views");
}
protected override NancyInternalConfiguration InternalConfiguration
{
get { return NancyInternalConfiguration.WithOverrides(x => x.ViewLocationProvider = typeof(ResourceViewLocationProvider)); }
}
我的模块,
public class AccountModule : NancyModule
{
private readonly IUserManagement _userManagement;
public AccountModule(IUserManagement userManagement) : base("/account")
{
_userManagement = userManagement;
Get["/login"] = p => View["Login.cshtml"];
}
}
Login.cshtml位于/Views/Account/Login.cshtml下,并标记为嵌入式资源。
如果我运行应用程序,我得到HTTP 500.在我看来,它试图在文件系统而不是汇编资源上找到它。
Nancy.RequestExecutionException:哦,不! ---> Nancy.ViewEngines.ViewNotFoundException:无法找到视图 'Login.cshtml'当前可用的视图引擎扩展: sshtml,html,htm,cshtml,vbhtml检查的位置: Login.cshtml,视图/ Login.cshtml,视图/帐号/ Login.cshtml,账户/ Login.cshtml,视图/帐号/ Login.cshtml,帐户/ Login.cshtml 根路径: d:\开发\项目\ candidate.net的\ src \ Candidate.Nancy.Selfhosted \ BIN \调试 在Nancy.ViewEngines.DefaultViewFactory.GetRenderedView(String viewName,Object model,ViewLocationContext viewLocationContext)at System.Dynamic.UpdateDelegates.UpdateAndExecute4 [T0,T1,T2,T3,TRET](调用点 site,T0 arg0,T1 arg1,T2 arg2,T3 arg3)at Nancy.ViewEngines.DefaultViewFactory.RenderView(String viewName, 对象模型,ViewLocationContext viewLocationContext)at Nancy.NancyModule.ViewRenderer.get_Item(String viewName)at Candidate.Nancy.Selfhosted.Modules.AccountModule。< .ctor> b__0(对象p) 在 d:\开发\项目\ candidate.net的\ src \ Candidate.Nancy.Selfhosted \模块\ AccountModule.cs:行 17在Nancy.Routing.Route.Invoke(DynamicDictionary参数)
在Nancy.NancyEngine.ResolveAndInvokeRoute(NancyContext context)中 Nancy.NancyEngine.InvokeRequestLifeCycle(NancyContext context, IPipelines管道)---内部异常堆栈跟踪结束---
在Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline管道,Exception ex)
更新:此问题在Nancy 0.12.1.0中为resolved。