5

我有一个 ASP.NET 4.5 MVC 应用程序。我不想设置 RAMMFAR ( runAllManagedModulesForAllRequests),因为这会不必要地通过 ASP.NET 管道发送对静态资源的请求;但是,我确实希望所有以路径开头的请求都/Download/通过 ASP.NET 路由管道运行,而不管扩展名如何。这样我可以将它们路由到控制器并提供动态生成的资源。

如何才能做到这一点?我无权访问 IIS 设置,但希望有办法通过web.config.

4

2 回答 2

1

RAMMFAR 设置针对每个应用程序。如果您希望站点的不同部分具有不同的设置,则必须创建单独的 IIS 应用程序,但不幸的是,您声明这不适合您。

不过,我有两个旁注:

  1. 你确定你甚至需要 RAMMFAR 吗?我认为在使用 IIS 7.5 和更新版本时,它很少需要,因为 IIS 和 ASP.NET 几乎可以正确处理托管/本机请求。
  2. 您是否将此确定为始终启用它的实际问题?毫无疑问,RAMMFAR 会使事情变慢,但问题是它是否会在您的应用程序中产生可衡量的影响。即使静态文件确实经过了一些托管代码,文件的最终处理也会在本机代码中处理。所以有一些额外的工作要“通过” ASP.NET 托管管道,但一旦完成,它就会回到本机 IIS/Windows 代码。
于 2013-01-31T18:58:14.810 回答
0

令人惊讶的是,这个问题在 Stack Overflow 中已经很久没有得到解答了。

正如您所提到的 - 当您只需要捕获站点中特定路径的所有请求时,不需要 runAllManagedModulesForAllRequests。

您可以指定应该发送到 MVC 处理程序的路径模式,如下所示

<add name="DynamicDownloadHandler" path="/download/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

上面的模式将捕获无扩展和有扩展的路径。

此处链接了在 MVC 中提供动态图像的示例实现

于 2021-09-09T21:07:27.827 回答