用于下载文件的ASP.NET处理程序(ashx)与MVC控制器操作

用于下载文件的ASP.NET处理程序(ashx)与MVC控制器操作,asp.net,asp.net-mvc,ashx,Asp.net,Asp.net Mvc,Ashx,我们有一个应用程序,它对一些旧的web应用程序页面使用webforms,但也包含一些新功能的MVC功能。我们对下载必须在服务器上处理的文件有一些新的要求(而不是直接链接到web服务器上的静态文件) 我没有看到任何迹象表明是否有理由使用ASHX处理程序,而不仅仅是使用MVC控制器,对响应对象进行操作,并在action方法的末尾返回EmptyResult() MVC是否有最佳实践?ASHX处理程序是否应该留给WebForms使用,或者它们是否比使用MVC提供这种类型的文件下载功能有一些好处?好吧,A

我们有一个应用程序,它对一些旧的web应用程序页面使用webforms,但也包含一些新功能的MVC功能。我们对下载必须在服务器上处理的文件有一些新的要求(而不是直接链接到web服务器上的静态文件)

我没有看到任何迹象表明是否有理由使用ASHX处理程序,而不仅仅是使用MVC控制器,对响应对象进行操作,并在action方法的末尾返回EmptyResult()


MVC是否有最佳实践?ASHX处理程序是否应该留给WebForms使用,或者它们是否比使用MVC提供这种类型的文件下载功能有一些好处?

好吧,ASHX可以更具包容性和特定性。。。然而,关于将所有代码和逻辑都放在主应用程序中,还有一些需要说明的地方

据我所知,现在MVC没有技术上的理由去做一个而不是另一个。使用WebForms很难对大文件进行流式处理,但是使用MVC,您可以非常轻松地完成这项工作(因此您不必首先将整个文件加载到内存中)。此外,考虑到现代异步方法,您不必太担心占用工作线程,也不必担心可伸缩性问题


这真的取决于你。即使您想将其分离到自己的模块中,现在将其作为owin模块而不是ashx可能更有意义。更多的是关于你想如何设计你的应用。

HttpHandler的性能更好,因为它比MVC操作更简单(只是几个额外的步骤,但仍然如此)

除此之外,我看不出出于性能原因,您有什么理由选择其中一个。MVC有一些很好的特性,比如缓存和授权属性

如果选择使用MVC,请使用专门为文件处理构建的结果,如或