這是一個MVC 6/WebApi應用程序。我試圖在前端使用AngularJS在後端使用WebApi。AngularJS with MVC 6
我有兩個靜態文件:(有最終將更多的靜態文件)的index.html和login.html的
我的角度應用程序包含在index.html的,而視圖(如/登錄)是從靜態文件(即login.html)加載的。
如果我去我的根URL,index.html加載得很好。但是,如果我去/登錄,我收到一個404頁面未找到。
現在,讓我們說,我不要想要讓我的應用程序與一堆控制器和視圖停滯不前,因爲它不必簡單地提供靜態文件。這太過分了。
我有我的路由設置服務於API調用(即〜/ api /無論)。我如何讓MVC 6忽略所有其他路線?
僅供參考,它也似乎MapPageRoute已棄用在MVC 6?
編輯:我做真正得到它的工作
一件事是添加自己的中間件攔截請求。下面的代碼畢竟是在配置方法我的默認中間件補充說:
app.Use(next => async context =>
{
if (context.Request.Path.Value.StartsWith("/api"))
await next.Invoke(context);
else
await context.Response.WriteAsync(System.IO.File.ReadAllText("index.html"));
});
這多少顯得有點,它只是一個黑客。它所做的只是允許任何以「/ api」開始的請求(然後由MVC中間件拾取),但任何其他呼叫都會以index.html的內容提供。因此,如果我請求的URL是「/ login」,則提供文件,,然後角度查看路徑並將文件加載到視圖中。
其他建議?
您使用什麼路由?內部或ui路由器? – tuckerjt07
我正在使用angular的ui路由器。另外,重新檢查這個問題......我添加了一個可以工作的黑客,但是尋找替代品。 – a11smiles
https:// github。com/angular-ui/ui-router/wiki/Frequently-Questions-Questions#如何配置你的服務器到工作與html5mode – Claies