2008-11-12 116 views
2
只是失敗

我一直在敲打我的頭撞牆試圖部署在IIS6我的MVC應用程序(linked questionASP.NET MVC - 的時間.mvc路由在II6

我已經報廢了通配符映射是和我試圖讓.mvc擴展工作。在IIS中所有配置都正確,並且.mvc擴展名指向所有動詞類型​​的.NET dll(未選中驗證是否存在選項)。

每次我提出請求時,我所得到的就是.NET 404頁面。 /Home.mvc和/Home.mvc/Index都會返回該頁面。

我沒有對默認的Web.config進行任何更改,並且我的所有路由都使用基於擴展名和擴展名的等效項進行配置。

我很欣賞多麼容易此配置必須(音)給大家讀誰得到了它的工作,但我向你保證,我沒有做任何事情不同,該礦將無法正常工作。我甚至嘗試將它部署到與IIS6不同的服務器上,並且也發生了相同的問題。

難道還有其他原因路由模塊/處理器是完全缺失的請求,並讓它通過下降到標準的.NET 404錯誤?奇怪的權限?

對於IIS 404錯誤,我更新了自定義錯誤設置,因此它在站點的路由中調用了Default.aspx頁面。這是在Visual Studio中生成的MVC的測試模板,後者執行以下步驟在後面的代碼默認頁面:

HttpContext.Current.RewritePath(Request.ApplicationPath); 
IHttpHandler httpHandler = new MvcHttpHandler(); 
httpHandler.ProcessRequest(HttpContext.Current); 

這只是然後讓我從原來職位的錯誤:

[HttpException (0x80004005): The incoming request does not match any route.] 
    System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +15589 
    System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +40 
    System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +7 
    ...... 

回答

3

我的original problem已被Oli解決,他指出Global.asax文件是網站所必需的。我正在使用NAnt/MSBuild部署我的發行包,並且不包含Global.asax文件。此文件可以在我們所有的.NET 2個項目被忽略,並已與我們所有的惡性部署結構,所以我也沒有放過這一個念頭。

一個需要注意的未來。還有一點我沒有發現,因此所有功勞Oli。再次感謝!

0

我還沒有對 默認的Web.config進行任何更改,我所有的路由 都配置了extenionless和 擴展等效。

請告訴我的延伸和擴展名路線的順序?

我要麼刪除擴展名(因爲你使用的是擴展),或者確保它的擴展路徑後添加(由於路徑的第一比賽性質)。

此外,檢查出http://www.asp.net/learn/mvc/tutorial-08-cs.aspx,只需仔細檢查你的IIS設置正確(這聽起來像你這樣做)。

0

謝謝huey,也經過了這篇文章 - 所有配置都一樣。

我的擴展名的航線是擴展問題之前輸出,純粹是因爲我打算使用ISAPI重寫模塊,並希望從我的路由表產生的任何URL是乾淨的。然後他們將被重寫爲基於擴展名的。

雖然目前我甚至不關心無擴展名的網址,但只想獲得一個版本,以便我可以向客戶展示!我真的很喜歡MVC的東西,但這已經把閃光的事情。

再次感謝您的協助。

+0

隨着我的設置,如果我有兩個延伸和擴展名與extensionsless配置聲明第一路由失敗。我假設路由引擎最初是匹配的,然後IIS被給予基於非擴展的URL。我會刪除extensionless並嘗試出來只是爲了看到。 – anonymous 2008-11-12 19:47:47

1

嘗試從最簡單的配置開始。將路線定義更改爲使用.aspx而不是。mvc並查看/home.aspx/index是否有效。

+0

這是正確的答案。我昨天晚上在CrystalTech工作。如果我回家的時候沒有發佈更好的答案,我會發布我的路線。確保你的默認路由在控制器上也使用.aspx。 – 2008-11-12 23:46:06