在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?
答案 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);