簡體   English   中英

部署到IIS后,對控制器的API調用中斷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM