未找到OWIN StaticFiles给出状态500

时间:2015-04-07 13:56:50

标签: asp.net iis owin

在IIS集成管道中使用OWIN时,我想将UseStaticFiles添加到我的组件中。在我的应用程序的Startup类中,我已经配置了这样:

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?

1 个答案:

答案 0 :(得分: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);