2015-04-07 2 views
0

При использовании OWIN в интегрированном конвейере IIS я хочу добавить UseStaticFiles к моему компоненту. В классе запуска моего приложения, я настроил это так:OWIN StaticFiles not found дает статус 500

var filesystem = new PhysicalFileSystem("./Scripts"); 
app.UseStaticFiles(new StaticFileOptions { RequestPath = new PathString("/files"), FileSystem = filesystem }); 

Чтобы получить эту работу, мне нужно убедить IIS, чтобы обработать запрос на /files/myfile.js в ASP.NET, так что мой Owin компонент может справиться с этим ,

Метод RAMMFAR как-то не работает для меня, но я обнаружил, что

<add name="MyStaticFiles-Handler" path="/files/*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

будет делать трюк. Однако, когда я запрашиваю /files/does-not-exist.js, я получаю статус 500 вместо 404.

Я понятия не имею, является ли мой метод TransferRequestHandler правильным методом и ожидается ли это 500. Как я могу убедиться, что несуществующие файлы в /files/* будут обслуживаться как 404 вместо 500?

ответ

2

Для того, чтобы статические файлы работать с IIS, позволяя RAMMFAR недостаточно: необходимо также вызвать app.UseStageMarker(PipelineStage.MapHandler) после вызова app.UseStaticFiles(...), как указано в документации: http://katanaproject.codeplex.com/wikipage?title=Static%20Files%20on%20IIS&referringTitle=Documentation

var filesystem = new PhysicalFileSystem("./Scripts"); 

app.UseStaticFiles(new StaticFileOptions { RequestPath = new PathString("/files"), FileSystem = filesystem }); 

app.UseStageMarker(PipelineStage.MapHandler); 
+0

Я имел 'app.UseStageMarker (PipelineStage. MapHandler); 'before UseStaticFiles ... Теперь я лучше понимаю UseStageMarker! – Jaap