2016-04-14 51 views
4

我有一個ASP.NET解決方案,包含一個託管我的angular2應用程序和web api項目的web項目。如何將angular2的http與除應用程序主機端口之外的其他端口一起使用?

這兩個項目都設置爲啓動項目,並在不同的端口上運行(Web項目爲45365,Web api項目爲20234)。

Let's說我有一個Web API控制器暴露/api/values這是目前通過http://localhost:20234/api/values

訪問如何訪問這在我的angular2 web應用程序?如果我嘗試

this.http.get("api/values") 

它試圖訪問不需要的http://localhost:45365/api/values。但是,我希望它調用http://localhost:20234/api/values,而不指定包含域在內的整個網址,以使我的服務能夠正常工作,即使應用程序發佈到使用除localhost之外的其他域的公用服務器時也是如此。

如何告訴http.get()使用20234作爲端口號?

+0

使用完整地址。 – MSwehli

+0

基本上改變得到this.http.get(「http:// localhost:45365/api/values」) – MSwehli

+0

謝謝,但我明確要求解決方案沒有硬連線'localhost'到我的服務 –

回答

5
constructor(private location:Location, private locationStrategy:LocationStrategy) {} 

someMethod() { 
    var base = this.locationStrategy.getBaseHref(); 
    // replace port 

    this.location.prepareExternalUrl(base + 'xxx'); 
} 

您可以在轉發到Http的服務中實現此功能,因此您無需重複此操作。

(未測試)

+1

完美,那就是我一直在尋找的東西。謝謝。 –

相關問題