需求: URL 輸入 http://xxxx/yyy 轉成 http://xxxx/yyy.html
最近趕流行,用 vue 寫了一個 SAP(Single application page),html網頁在 MVC 的架構下可成功執行,但我就是想讓使用者操作上更方便,只要輸入網址 route 就直接跳轉到此 html 頁面。如果照原本 MapHttpRoute的方式會造成 .NET 出現找不到 Controller 的問題。最後發現不用 MapHttpRoute 去解此問題,使用MapPageRoute才是正解。
// Web API routes
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
以下增加於 Global.asax.cs
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
GlobalConfiguration.Configure(WebApiConfig.Register);
// 新增加以下 route
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("",
"yyy", "~/yyy.html");
}
}
Web.Config 加上對應的 extension
<compilation debug="true" targetFramework="4.5.2">
<buildProviders >
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders >
</compilation>