ASP.NET vNext上的Nancy不加载Nancy.Viewengines.Razor viewengine

ASP.NET vNext上的Nancy不加载Nancy.Viewengines.Razor viewengine,razor,nancy,asp.net-core,Razor,Nancy,Asp.net Core,我正在用debian上的ASP.NETVNEXT尝试Nancy。我已经设置了一个示例项目,并使其与自托管Owin应用程序一起工作 Nancy it self似乎运行良好,但它正在K运行时目录中查找视图,Razor viewengine不会加载 尽管Nancy.Viewengines.Razor在project.json文件中,但K并不显示它正在被加载 这是我得到的错误: Nancy.RequestExecutionException:哦,没有!-->Nancy.ViewEngines.ViewN

我正在用debian上的ASP.NETVNEXT尝试Nancy。我已经设置了一个示例项目,并使其与自托管Owin应用程序一起工作

Nancy it self似乎运行良好,但它正在K运行时目录中查找视图,Razor viewengine不会加载

尽管Nancy.Viewengines.Razor在project.json文件中,但K并不显示它正在被加载

这是我得到的错误:

Nancy.RequestExecutionException:哦,没有!-->Nancy.ViewEngines.ViewNotFoundException:找不到视图“ViewTest”
当前可用的视图引擎扩展:sshtml、html、htm
检查的位置:视图/主视图/视图测试nl nl nl、视图/主视图/视图测试nl nl、主视图/视图测试nl nl、视图/视图测试nl nl、视图/视图测试nl、视图测试nl、视图测试nl
根路径:/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/
如果您希望返回原始数据,请确保将请求的“Accept”-标头设置为正确的格式,例如Nancy.ViewEngines.DefaultViewFactory.GetRenderedView(string,object,Nancy.ViewEngines.ViewLocationContext)中的“application/json”
.

My project.json:

{
“依赖项”:{
“Microsoft.Owin.Hosting”:“2.1.0-*”,
“Microsoft.Owin.Hosting”:“2.1.0-*”,
“Microsoft.Owin.Host.HttpListener”:“2.1.0-*”,
“Nancy”:“0.23.2-*”,
“Nancy.Owin”:“0.23.2-*”,
“Nancy.Viewengines.Razor”:“0.23.2-*”,
},
}

已加载库的:

vnext@vnext:~/test/src$k运行
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[LoaderContainer]:加载名称=Microsoft.Owin.host.HttpListener
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[DefaultLoaderEngine]:加载文件(/home/vnext/.kpm/packages/Microsoft.Owin.host.HttpListener/2.1.0/lib/net45/Microsoft.Owin.host.HttpListener.dll)
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[NuGetAssemblyLoader]:加载的名称=Microsoft.Owin.host.HttpListener(1ms)
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[LoaderContainer]:加载名称=Nancy.Owin
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[DefaultLoaderEngine]:加载文件(/home/vnext/.kpm/packages/Nancy.Owin/0.23.2/lib/net40/Nancy.Owin.dll)
/home/vnext/.kre/packages/kre-mono45-x86.1.0.0-alpha3/bin/klr.host.dll信息:0:[NuGetAssemblyLoader]:加载的名称=Nancy.Owin,1ms

当我把它放在krebin目录中,而不是放在项目的view文件夹中时,它将加载一个普通的html视图

如何强制Nancy查看正确的文件夹,以及如何加载Razor viewengine


这是我使用的代码:

KRE找不到视图目录,您可以自定义引导程序并覆盖
IRootPathProvider
,将根目录设置为绝对路径。查看:

默认情况下,Nancy扫描
AppDomain.CurrentDomain.BaseDirectory
以查找程序集。在vNext中,程序集存储在单独的包中,而不是在bin目录中,因此它找不到Razor视图引擎。在完全支持可用之前,您可以实现自己的引导程序并覆盖ViewEngines列表:

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
    base.ConfigureApplicationContainer(container);
    container.Register<IViewEngine, Nancy.ViewEngines.Razor.RazorViewEngine>();
    container.Register<Nancy.ViewEngines.Razor.IRazorConfiguration, Nancy.    ViewEngines.Razor.DefaultRazorConfiguration>();
}

protected override IEnumerable<Type> ViewEngines
{
    get { return new[] { typeof(Nancy.ViewEngines.Razor.RazorViewEngine) }; }
}
并实现Nancy的IRootPathProvider

public class vNextRootPathProvider : IRootPathProvider
{
    private string BasePath = Startup.Environment.ApplicationBasePath;

    public string GetRootPath()
    {
        return BasePath;
    }
}
public class vNextRootPathProvider : IRootPathProvider
{
    private string BasePath = Startup.Environment.ApplicationBasePath;

    public string GetRootPath()
    {
        return BasePath;
    }
}