我有一个ASP.Net MVC 4.5 WebAPI控制器(IIS8),可以从存储库提供静态图像文件。我想要使用的URL就像;
http://example.com/blob/image/123412341324.jpg
问题是'.jpg'在这里似乎是通过静态文件处理程序,这在很大程度上是我想要保留的。我不希望所有静态文件通过ASP.Net只通过此URL路径上的文件。
有没有什么方法可以配置ASP.Net来提供没有runAllManagedModulesForAllRequests
的这些文件而不修改网址,例如删除文件扩展名?理想情况下,IIS路由机制查看文件夹路径/blob/image/
;
http://example.com/blob/image/123412341324.jpg -- route through ASP.Net WebAPI
http://example.com/staticimages/123412341324.jpg -- do not route through ASP.Net
http://example.com/anywherelese/123412341324.jpg -- do not route through ASP.Net
我知道我可以写一个单独的'IHttpHandler',但如果可能的话我想通过MVC WebAPI控制器进行路由。
答案 0 :(得分:1)
事实证明,使用处理程序映射非常容易。我尝试了一些通配符,但虽然*.jpeg
工作blob/image/*.jpeg
没有。最后,在post的帮助下,我在我的应用程序的web.config中提出了以下条目,它完成了我需要的操作并路由了对该控制器的所有请求;
<system.webServer>
<handlers>
...
<add name="my-blob-jpeg-ExtensionlessUrlHandler-Integrated-4.0" path="blob/image" verb="GET,HEAD,POST,DEBUG,DELETE,PUT,PATCH" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
...
</handlers>
</system.webServer>
它不是特定于图像文件,但我不打算沿着该路径放置任何其他静态内容,所以我很好。