如何在asp.net mvc 4中配置此路由?

时间:2013-12-04 14:30:24

标签: asp.net-mvc-4 routing asp.net-mvc-routing

我目前有一个网站,它从一个简单的网站提供静态文件,只指向一个目录,我想通过抓取DropBox中的文件来替换它。

我已经拥有DropBox上的文件并抓住它们很简单但我现在需要一个网站来解析文件的URL并给我访问DropBox上的文件所需的参数。

典型文件网址:

http://companyfiles.mywebsite.com/18/RepZio/companyfiles/subfolder1/SampleFile.docx

我希望配置的路线可以使用:

routes.MapRoute(
                name: "Default",
                url: "{id}/{dropboxfolder}/companyfiles/{path}",
                defaults: new { controller = "CompanyFiles", action = "Index" }
            );

我知道我的问题是我的网址中的所有额外/,我如何解析/companyfiles/之后的任何内容作为单个参数?

我无法更改被调用的URL,因为它们已存在于我系统中的其他任何位置。

1 个答案:

答案 0 :(得分:1)

1。文件路径信息可以通过通配符匹配模式捕获,例如

url: "{id}/{dropboxfolder}/companyfiles/{*path}",

2. 在ASP.net Classic模式中,带扩展名的URL由静态文件处理程序提供。要使所有URL在集成模式下通过ASP.net管道,应在system.webserver.handlers部分添加以下内容

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

这应该通过asp.net管道将URL扩展。

此致