Configurar um servidor de arquivos estático OWIN em um prefixo de rota específico
Estou tentando manter meu conteúdo em locais não padrão (por exemplo, embower_components
ou/packages/../tools
) Como parte do experimento, estou tentando configurar um aplicativo asp.net mvc 5 em que atingir uma determinada rota permita-me procurar arquivos no diretório de pacotes undersorejs.
Eu tenho os seguintes pacotes de nuget (além do padrão)
Install-Package underscore.js
Install-Package Microsoft.Owin.StaticFiles
Install-Package Microsoft.Owin.Host.SystemWeb
Isto é o que eu tenho em uma classe de inicialização OWIN
var fileSystem = new PhysicalFileSystem(
HttpContext.Current.Server.MapPath("~")+"/../packages/underscore.js.1.6.0"
);
var options = new FileServerOptions {EnableDirectoryBrowsing = true, FileSystem = fileSystem};
app.MapWhen(ctx =>
ctx.Request.Uri.AbsolutePath.StartsWith("/__underscore"),
ab => ab.UseFileServer(options)
);
Para meu entendimento e experimentação anterior, isso é bastante direto - quando a solicitação começa com/__underscore
use o servidor de arquivos estático simples. No entanto, quando vou para/__underscore
Eu recebo um erro 404.
No entanto, ao colocar pontos de interrupção, vejo que o lambda UseFileServer é executado uma vez na inicialização e nunca mais, enquanto o lambda predicado é chamado em todas as solicitações (e retorna o valor correto).
o que estou perdendo?