Konfigurieren Sie einen statischen OWIN-Dateiserver mit einem bestimmten Routenpräfix

Ich experimentiere damit, meine Inhalte an nicht standardmäßigen Speicherorten zu speichern (z. B. inbower_components oder/packages/../tools). Im Rahmen des Experiments versuche ich, eine asp.net mvc 5-Anwendung einzurichten, mit der ich durch das Erreichen einer bestimmten Route Dateien im Paketverzeichnis von undersorejs durchsuchen kann.

Ich habe die folgenden Nuget-Pakete (zusätzlich zu den Standardpaketen)

Install-Package underscore.js
Install-Package Microsoft.Owin.StaticFiles
Install-Package Microsoft.Owin.Host.SystemWeb

Das habe ich in einer OWIN-Startklasse

 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)
 );

Nach meinem Verständnis und früheren Experimenten ist dies ziemlich einfach - wenn die Anfrage mit beginnt/__underscore Verwenden Sie den einfachen statischen Dateiserver. Allerdings, wenn ich zu dir rübergehe/__underscore Ich erhalte einen 404-Fehler.

Beim Platzieren von Haltepunkten kann ich jedoch feststellen, dass das UseFileServer-Lambda beim Start einmal und dann nie wieder ausgeführt wird, während das Prädikat Lambda bei jeder Anforderung aufgerufen wird (und den richtigen Wert zurückgibt).

Was vermisse ich?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage