在 IIS 6 同時啟用 ASP.NET 2.0 與 4.0 時,網站可能拋出 System.Web.HttpException: Path '//eurl.axd/' was not found 錯誤。此問題源於 ASP.NET 4.0 的無副檔名 URL 處理機制與 ASP.NET 2.0 管線不相容。本文提供三種解決方案,依情境選擇。
eurl.axd 字串。eurl.axd,嘗試尋找實體檔案失敗,拋出 HttpException。若網站無需 ASP.NET 4.0 新特性(MVC 2/3、.NET 4 語法、動態語言執行平台等),直接在 IIS 6 網站屬性 → ASP.NET 索引標籤,將版本切回 2.0.50727。最簡單、零風險。
若主站需 4.0,但部分舊模組僅支援 2.0:
優點:版本隔離徹底。缺點:部署複雜度上升、需處理跨站認證/Session 共享。
若上述方案均不可行,可關閉 ASP.NET 4.0 的 Extensionless URL 處理:
regedit,定位至:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0EnableExtensionlessUrls0(1=啟用,0=停用)iisreset 重新載入設定。副作用:ASP.NET 4.0 應用將無法使用無副檔名 URL(如 MVC 路由、Web API、友善網址),需在 web.config 明確對應 .aspx、.mvc 等副檔名,或改用 Wildcard Mapping。
IIS 6 已於 2015 年結束支援。根本解決之道是升級至 Windows Server 2012 R2+ / IIS 8.5+,採用整合管線模式:
eurl.axd 機制,原生支援 Extensionless URL。eurl.axd 例外。IIS 6 雙版本共存是歷史遺留問題,方案一最省力,方案二最徹底,方案三為權宜之計。長遠規劃應納入 IIS 升級/應用現代化路線圖,徹底消除架構層面的版本衝突風險。