官方宣稱 .NET 2.0 高度向後相容,但實際升級既有 ASP.NET 1.1 應用 (如部落格園) 仍會遇到問題。實測發現:通配符對應 (*) 配合無副檔名 URL (/blog) 在 2.0 會拋出 No build provider registered for extension '' 錯誤。
ASP.NET 2.0 引入 <buildProviders> 機制,每個副檔名需對應一個 BuildProvider。無副檔名請求被視為空字串副檔名,系統找不到對應 Provider。1.1 時代靠 <add verb="*" path="*" type="..."/> 攔截所有請求,2.0 不再支援此模式。
<buildProviders>
<add extension=".*" type="System.Web.Compilation.PageBuildProvider" /> <!-- 不支援萬用字元 -->
<add extension="*" type="..." /> <!-- 無效 -->
<add extension="*.*" type="..." /> <!-- 無效 -->
<add extension="" type="..." /> <!-- 組態驗證拒絕空字串 -->
</buildProviders>
.aspx 副檔名或實作自訂 IHttpHandler + BuildProvider相容性非絕對,升級前務必實測核心路徑。