繁体   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