允许 ASP.NET MVC URL 中的所有扩展

Allow all extensions in ASP.NET MVC URL

我正在开发 ASP.NET MVC 网络应用程序,我想在我的应用程序 URL 中允许所有文件扩展名。我试过添加

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

inside /<system.webServer>/<handlers> in Web.config 但它只允许 url 中的 .docx 文件扩展名。我希望我的 url 成为 /Download/{FileName}.extension

我怎样才能用更少的解决方法实现我想要的功能。

此致。

编辑: 我还尝试在 AreaRegistration 中添加以下路由设置。

context.MapRoute( "FileDownload", "Download/{fileName}.{datatype}", new { controller = "Download", action = "Download", fileId = UrlParameter.Optional, fileName = UrlParameter.Optional } );

控制器:

public ActionResult Download(string fileId, string fileName, string datatype) { }

连同 <add ChatFileHandler ... /> Web.config 中的 path="*.docx"。添加这些我能够在控制器的操作方法中获取文件名和数据类型。但我不想为每个文件扩展名添加处理程序,因为它们将成百上千。

您可以通过在 web.config 中添加以下处理程序来禁用特定路径(和 HTTP 动词)的静态文件处理程序:

<system.webServer>
<!-- -->
    <handlers>
        <add name="Download" path="/Download/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>