我正在开发一个ASP.NET应用程序,它需要能够为包含范围请求的文件提供服务。 ASP.NET MVC团队已经说过they won't support this within MVC,并建议使用IIS来提供静态文件。
这是我的问题。当用户发出请求时,他们不会在URL中包含任何直接映射到文件的标识信息。请求可能如下所示:http://whatever.com/Download?ID=TXlGaWxlLnhv34lk。在MVC中,我需要进行Web服务调用以将该ID解析为最终将位于网络共享上的文件。此外,我们有自己的定制授权机制,在我们为文件提供服务之前,每个请求都必须经过。
TomaszPęczek实现了一个名为RangeFileResult的自定义ActionResult,它似乎重新实现了IIS默认执行的范围请求支持。我尝试过使用它,它似乎工作......但我觉得应该有办法让IIS为我提供静态文件服务。
所以,最后,我想知道是否有可能让MVC收到请求,验证&授权,将ID解析为网络共享上的文件路径,然后回退到IIS的StaticFile Handler以实际返回文件信息。
答案 0 :(得分:0)
是的,查找真实文件位置然后将用户重定向到该位置以下载文件当然很容易。但是,您真正的问题是静态文件的身份验证。你如何做到这一点取决于你的要求(即,它们是否应该在下载后继续访问?是否应该单独授权每个文件?或者访问所有文件?你需要做额外的工作,比如在数据库中放入数据后下载完成......这里有很多变量。他们都提出了不同类型的解决方案。