【问题标题】:Nancy: Serving static content (e.g. index.html) from "/"?Nancy:从“/”提供静态内容(例如 index.html)?
【发布时间】:2012-08-02 18:35:51
【问题描述】:

我正在尝试使用 Nancy 制作单页 Web 应用程序。因此,我希望我的根 URL 提供一个普通的 .html 文件,而不需要任何视图逻辑或任何东西。

我试过了

Get["/"] = parameters => Response.AsHtml("content/index.html")

但是没有AsHtml

我尝试了一个自定义引导程序

conventions.StaticContentsConventions.Add(
    StaticContentConventionBuilder.AddFile("/", @"content/index.html")
);

但显然它认为“/”不是文件 - Nancy 给了我一个 http://localhost:<port>/ 上的目录列表。

我该怎么办?这应该没那么难吧?

ps。有什么办法可以关闭该目录列表?感觉很不安全。

【问题讨论】:

    标签: c# nancy


    【解决方案1】:

    添加一个默认为index.html服务的模块:

    public IndexModule() : base("")
    {
        Get[@"/"] = parameters =>
        {
            return Response.AsFile("Content/index.html", "text/html");
        };
    }
    

    然后使用引导程序中的约定提供其余文件:

    protected override void ConfigureConventions(NancyConventions nancyConventions)
    {
        nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("/", "Content"));
        base.ConfigureConventions(nancyConventions);
    }
    

    【讨论】:

    • 不确定“Response.AsFile”的来源,但GenericFileResponse("Content/index.html", "text/html") 可以解决问题。
    • 将表达式 Get[@"/"] ... 添加到现有模块对我有用。
    【解决方案2】:

    把它放到你的views文件夹里然后做:

    Get["/"] = _ => View["index"];
    

    目录列表与 Nancy 无关,您使用的任何主机都会显示该目录。

    【讨论】:

    • 谢谢。我会把它作为公认的答案,即使它感觉相当不令人满意。我最终只是简单地在前面放了一个 nginx 来服务我的静态文件,而让 Nancy 只用于后端。
    • 调试呢,用visual studio调试的时候如何获取index.html文件?
    • 这不是托管静态文件。
    • @Steven Robbins :对不起,我喜欢南希,但这不是“超级快乐的道路”。参见例如HotTowel.Angular Nuget 包,完全是客户端的东西,与服务器无关。不与 NancyFx 一起运行,因为 Nancy 不支持它,甚至通过 StaticContentConventionBuilder 的“预期”方式也不支持。它给出了一个安全例外,即使我只允许 html 文件,这是完美的保存。如果不花半个小时,就无法覆盖。如果我愿意,我可以留在 WebApi。这不是超级快乐,这是失败的。对不起。
    • jst 使 StaticContentConventionBuilder.AddFile("/", "/index.html") 工作..真的,这是一个基本的用例。或者更好的是,通过 StaticContentConventionBuilder 上的简单方法为任何文件自动映射任何 html、js、css 的内容。我现在真的很困惑为什么用户不先到这里。
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多