2015-12-02 88 views
1

這是一個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」,則提供文件,,然後角度查看路徑並將文件加載到視圖中。

其他建議?

+0

您使用什麼路由?內部或ui路由器? – tuckerjt07

+0

我正在使用angular的ui路由器。另外,重新檢查這個問題......我添加了一個可以工作的黑客,但是尋找替代品。 – a11smiles

+1

https:// github。com/angular-ui/ui-router/wiki/Frequently-Questions-Questions#如何配置你的服務器到工作與html5mode – Claies

回答

0

我能夠做你所要求的here。基本上,我添加了一個包羅萬象的路線,我的索引行動:

[路線(「{*路徑}」)]如果沒有MVC的動作不存在,請撥打我的索引行動和角路由將採取

意義從那裏開始

+0

感謝您的迴應,但您未能錯過這一點...我不想使用控制器/視圖。這是一個與WebApi進行通信的純粹的客戶端應用程序。 – a11smiles