2016-09-28 73 views
0

我有一個在Asp MVC Core 1.0下運行的Aurelia應用程序。該應用程序使用HttpClient調用控制器操作,該操作返回json數據。家庭控制器包含了所有的動作,和我配置HttpClient的,像這樣:如何使用Aurelia + .Net Core + IIS Web應用程序獲取正確的URL

http.configure(config => { 
     config 
      .useStandardConfiguration() 
      .withBaseUrl('Home/'); 
}); 

在運行Visual Studio中的應用程序,一切正常。它在localhost:55475上託管,當我撥打this.http.fetch('GetData')時,它向localhost:55475/Home/GetData發送請求。

當我部署到IIS時,問題出現了。該應用程序作爲默認網站下的Web應用程序部署,因此根網址爲server.org/MyApp。應用程序啓動時很好,但是當我撥打電話this.http.fetch('GetData'),從server.org/Home/GetData,而不是server.org/MyApp/Home/GetData要求,這顯然導致404

爲什麼我的讀取請求忽略MyApp?我認爲沒有在我的.withBaseUrl上的主導斜線會使網址相對,但顯然不是?

+0

只要輕輕一碰,就會得到同樣的問題。我目前正在研究如何將System.baseURL傳遞到模塊中,以便我可以預先調用它以調用withBaseUrl。但是,我只是不明白爲什麼應用程序沒有使用它加載的目錄作爲工作的基礎。 –

+0

這就是我所做的。我在我的視圖中添加了@ Html.Hidden(「rootUrl」,Url.Content(「〜」))。然後我將該值加載到共享模塊中:'this.rootUrl = $('#rootUrl')。val();'。然後,我將'rootUrl'附加到我的所有API調用中。不是非常優雅,但它的作品。 – Jerrad

回答

1

我找到的解決方案是放在我放入瀏覽器地址欄的URL中......在你的情況下,如果你瀏覽到server.org/MyApp/而不是瀏覽到server.org/MyApp,它是否會開始工作(注意額外的斜線)?這對我有效。

因此,我需要實施的整體修復方案是在託管Aurelia的頁面頂部有一個base元素,該元素用基準URL設置了尾部斜線,例如,

<base href="/MyApp/" />

其中我添加使用ASP.Net核心與這條線在我index.cshtml文件:

<base href="@this.Url.Content("~")/" />

,否則,你可以使用302用戶重定向到的完整URL響應。

相關問題