未找到 OWIN StaticFiles 给出状态 500

OWIN StaticFiles not found gives status 500

在 IIS 集成管道中使用 OWIN 时,我想将 UseStaticFiles 添加到我的组件中。在我的应用程序的启动 class 中,我这样配置:

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?

要使静态文件与 IIS 一起工作,仅启用 RAMMFAR 是不够的:您还需要在调用 app.UseStaticFiles(...) 之后调用 app.UseStageMarker(PipelineStage.MapHandler),如文档所示: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);