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