[英]API Calls to controller is breaking after deploying to IIS
我正在調用API調用以使用javascript從服務器獲取JSON數據。
$(function () {
var customersTable = $('#Customers');
var returnCustomersTable = UpdateDataTable(customersTable, "/Customers/Loaddata");
}
當我在Visual Studio Dev環境中工作時,這可以正常工作,因為我的Web應用程序位於root上,因此所有javascript都可以正常工作。
例:
我的網站網址: http://localhost:4391
API調用將是: http://localhost:4391/Customers/Loaddata
這很好。
但是,當我將應用程序部署到IIS時,我的網站網址將是
我的網站網址: http://localhost/MyAppName
但是API調用仍然會
API調用為: http://localhost/Customers/Loaddata
,導致找不到。
由於我在單獨的文件中使用javascript,因此我將無法執行URL.Action
。
另一個選擇是為dev和prod創建基本URL,並為每個servcie調用創建追加。
但是我在想是否還有其他方法。
ASP.NET MVC中的路由配置旨在用作應用程序中可以維護所有URL的單個位置。
如果所有URL都是通過基於UrlHelper
的方法之一(例如Url.Action()
通過路由生成的,而不是在控制器和視圖中進行硬編碼的,則對項目維護有很大幫助。
只要您的JavaScript在MVC視圖中,您就可Url.Action
聯解析Url.Action
。
$(function () {
var customersTable = $('#Customers');
var returnCustomersTable = UpdateDataTable(customersTable,
'@Url.Action("Loaddata", "Customers")');
}
如果JavaScript在MVC之外的單獨文件中,請考慮通過變量或函數參數傳遞URL。
此路由功能還使部署ASP.NET MVC更加容易,因為當未將應用程序部署到根網站虛擬目錄時,生成的URL將適合使用應用程序路徑。
在IIS網站根目錄中運行的應用程序:
/Customers/Loaddata
在配置為IIS應用程序的虛擬子目錄中運行的應用程序名為“ MyAppName”:
/MyAppName/Customers/Loaddata
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.