Nancy - 来自其他程序集的嵌入式视图

时间:2014-04-14 13:38:32

标签: c# nancy

我创建了2个项目:

  1. 将文件Views \ other.html设置为嵌入资源的类库。

  2. 使用Nancy自托管设置,bootstrapper和nancy模块的控制台应用程序,只需通过返回名为“other.html”的视图(在另一个程序集中定义的视图)来响应GET。

    < / LI>

    Bootstrapper配置:

    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {  
        base.ConfigureApplicationContainer(container);
        ResourceViewLocationProvider.RootNamespaces.Add(GetType().Assembly, "ConsoleApplication1.Views"); // (1)
        ResourceViewLocationProvider.RootNamespaces.Add(typeof(Class1).Assembly, "ClassLibrary1.Views");
    }
    
    protected override NancyInternalConfiguration InternalConfiguration
    {
        get { return NancyInternalConfiguration.WithOverrides(OnConfigurationBuilder); }
    }
    
    private void OnConfigurationBuilder(NancyInternalConfiguration x)
    {
        x.ViewLocationProvider = typeof(ResourceViewLocationProvider);
    }
    

    应用程序使用此配置正常启动,但无法返回定义为其他库的嵌入式资源的“other.html”。

    当我返回嵌入主控制台应用程序的视图时,它可以正常工作。

    当我删除标记为(1)的行时,app无法启动以下错误:

    Unable to resolve type: Nancy.ViewEngines.ViewEngineApplicationStartup
    Only one view was found in assembly ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, but no rootnamespace had been registered.
    

    我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

问题已解决:https://groups.google.com/forum/#!topic/nancy-web-framework/9N4f6-Y4dNA

看起来目前可用的Nuget包不包含此修复程序!!!

我反编译了0.22 nuget包,对我而言,这个改变并不存在。它在github上。