2011-09-02 90 views
3

路由路径:ASP.NET MVC3应用程序 - HTTP错误404.7用双点

 context.MapRoute(
      "Dashboard_default", 
      "Dashboard/{controller}/{action}/{jobName}", 
      new { action = "Index", controller = "Dashboard", jobName = UrlParameter.Optional } 
     ); 

但对于路线

http://localhost/candidate/Dashboard/Overview/Show/sdfdsf.xx.dd

我收到:

HTTP错误404.7 - 未找到 请求过滤模块配置为拒绝文件扩展名。

在同一时间,路线

http://localhost/candidate/Dashboard/Overview/Show/sdfdsf.xx

给出正确的反应。

我假设一些问题与IIS,有没有人看到过?

+0

我会想象你的路线从来没有达到'MapRoute',因为'候选人'!='Dashboard'? –

+0

不,候选人只是虚拟文件夹的名称 –

+0

我看过类似的问题,但没有.dd扩展名。 IIS禁止“.ascx”,“.resx”,“.master”等作为路由的一部分,其中一个扩展名也是“.dd”(disk dupe?:)) 我已经描述了删除过程我的答案(我相信这不是必要的,但为了以防万一)。 –

回答

5

要允许特定的URL,在你的web.config,你可以补充一点:

<system.webServer> 
    <security> 
     <requestFiltering> 
     <fileExtensions> 
      <remove fileExtension=".dd" /> 
     </fileExtensions> 
     </requestFiltering> 
    </security> 
    </system.webServer> 

否则,您可以添加一个<clear /> fileEx内张力以允许任何文件被路由。

0

如果你使用.NET 4.0,给这个在你的web.config您的System.Web节一拍:

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

更多解释在这里: http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

更多信息: http://weblogs.asp.net/carldacosta/archive/2010/04/24/tweaking-a-few-url-validation-settings-on-asp-net-v4-0.aspx

据我所知,点在路由定义中被视为文字。

http://haacked.com/archive/2008/04/10/upcoming-changes-in-routing.aspx

+0

我已经试过,但没有成功 –

+0

我想知道它是否甚至使它通过IIS进入路由引擎。你有没有尝试一条全面的路线?它至少应该帮助确定问题是IIS还是MVC路由。 –

+0

另外,你有没有试过这个:http://www.west-wind.com/wconnect/WebLog/ShowEntry.blog?id=697 –

0

您需要在最后PARAM包罗万象的路由工作。

context.MapRoute(
      "Dashboard_default", 
      "candidate/Dashboard/{controller}/{action}/{*jobName}", 
      new { action = "Index", 
          controller = "Overview", 
          jobName = UrlParameter.Optional} 
     ); 
+0

试过,相同的结果:( –

+0

只注意到它缺少路径中的候选人,添加有控制器两次,你也有太多的段,他们不匹配 – TheCodeKing

+0

概述在哪里适合它?这是一个固定的字符串吗? – TheCodeKing

0

.dd扩展名是默认在IIS中被拒绝的文件扩展名之一。您可以通过转到inetmgr - >网站 - >应用程序(候选) - >请求筛选(在IIS部分中) - >在文件扩展名选项卡下找到.dd并将其删除,将其删除。

编辑

描述的动作会自动添加下一节的web.config(我看到有人这样做,并张贴作为新的答案):

<system.webServer> 
    <security> 
     <requestFiltering> 
      <fileExtensions> 
       <remove fileExtension=".dd" /> 
      </fileExtensions> 
     </requestFiltering> 
    </security> 
</system.webServer>