Nancyfx为静态内容启用CORS

时间:2015-02-11 08:32:45

标签: cors nancy

我能够允许CORS用于我的普通路由,但不能用于静态内容,因为没有为这些请求调用after请求管道处理程序。

任何启用它的方法?

此致

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。至少有几种方法可以解决它。我能够从静态约定中删除“/ Content”目录并在NancyModule中处理这些请求,然后运行AfterPipeline处理程序。另一种选择是将需要CORS的文件从“/ Content”目录移到另一个位置,并在NancyModule中处理这些请求。

以下是一个示例,从自定义引导程序开始:

protected override void ConfigureConventions(Nancy.Conventions.NancyConventions nancyConventions)
{
    base.ConfigureConventions(nancyConventions);

    //remove "/Content" directory from the static conventions
    nancyConventions.StaticContentsConventions.Clear();

    //add a different path to static content since it is not allowed to be empty
    nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("scripts"));            
}

在NancyModule中,处理文件请求,也许就像......

Get["/content/{path*}"] = args =>
{
    var path = "/content/" + args.path;

    //pass in the file path, and content type to return
    return Response.AsFile(path, "text/plain");
};

如果您只是将文件移出“/ Content”目录,则只需将content替换为备用文件夹名称,即Get["/altFolder/{path}*"]var path = "/altFolder/" + args.path;