我正试图通过将它们包装在模板中来装饰公共目录中的一些文件。
示例文件系统结构:
project_root\
file_i_want_to_decorate.html
file_that_should_be_just_downloadable.zip
路由/{path*}
只捕获所有文件。不好。
所以我的想法是使用自定义匹配器:
type ContentRouteSegmentConstraint() =
inherit RouteSegmentConstraintBase<string>()
let root = Environment.GetEnvironmentVariable("PROJECT_ROOT")
override x.Name with get() = "content"
override x.TryMatch(``constraint``, segment, matchedValue) =
matchedValue <- segment
File.Exist(segment)
添加路线/{path*:content}
。嗯,它的工作原理,但只有第一个段传递给函数。即使使用/index
调用它,动态字典中的参数"path"
也是空的。
答案 0 :(得分:0)
这是不正确的方法。路段过滤功能应该按如下方式使用,而不是匹配段的功能:
Get["/{path*}", (fun (context) -> context.Request.Url.Path |> content.CanServe)] <- fun ...