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

时间:2018-03-26 13:32:14

标签: c# asp.net-mvc url-routing

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

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

在Web.config中的/<system.webServer>/<handlers>内,但它只允许在url中使用.docx文件扩展名。我希望我的网址为/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) { }

在Web.config中使用带有path =“*。docx”的<add ChatFileHandler ... />。添加这些我能够在控制器的action方法中获取fileName和datatype。但我不想为每个文件扩展名添加处理程序,因为它们将在数百个文件扩展名中。

1 个答案:

答案 0 :(得分:2)

您可以通过在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>