2011-09-02 28 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>