Jquery asp.net mvc-当应用程序发布到IIS时,控制器操作返回404
我有一个在本地调试和运行的应用程序。当我将其发布到IIS时,再也找不到控制器上的操作 它回来了Jquery asp.net mvc-当应用程序发布到IIS时,控制器操作返回404,jquery,asp.net,ajax,asp.net-mvc,iis,Jquery,Asp.net,Ajax,Asp.net Mvc,Iis,我有一个在本地调试和运行的应用程序。当我将其发布到IIS时,再也找不到控制器上的操作 它回来了 http://server/home/Table2?ids=122026000&ids=123201000&ids=122627000&ids=121514000&ids=123187000 404(未找到) 我正在使用jqueryajax函数将id传递给操作,然后该操作返回一个局部视图,其中模型是根据id构造的 控制器 public class HomeController : Controller
http://server/home/Table2?ids=122026000&ids=123201000&ids=122627000&ids=121514000&ids=123187000 404(未找到)
我正在使用jqueryajax函数将id传递给操作,然后该操作返回一个局部视图,其中模型是根据id构造的
控制器
public class HomeController : Controller
{
[HttpGet]
public ActionResult Table2(string[] ids)
{
(......) //query database and build model
return PartialView("_Partial", Model);
}
}
AJAX
var submitAgmtIds = function submitAgmtIds(ids) {
$.get('Home/Table2', $.param({ ids: ids }, true), function (partialView) {
$("#av-row-2").html(partialView);
});
expandTable();
}
路线
这些将保留为默认值
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
“ids”是这样一个数组:var数组=[1,2,3,4,5]
同样,它在调试中工作良好,但现在返回404,因为它位于web服务器上
想法
更新
我能够通过将我的应用程序名硬编码到ajax调用中来实现这一点,这样
{application name}/Home/Table
。。这正如预期的那样有效。如果应用程序是以另一个名称部署的,如何动态地执行此操作才能正常工作?您好,您可以尝试更改此行:$.get('Home/Table2',$.param({ids:ids},true),function(partialView)
如下:$.get('../Home/Table2',$.param({ids:ids},true),function(partialView)
注意:将两个点和正斜杠放在家前面,将解决您的问题
更改的ajax代码:
var submitAgmtIds = function submitAgmtIds(ids) {
$.get('../Home/Table2', $.param({ ids: ids }, true), function (partialView) {
$("#av-row-2").html(partialView);
});
expandTable();
}
希望以上信息有用,请告诉我您的想法或反馈
谢谢
Karthik请参见编辑..它们在构建项目时保留为默认值。它位于主控制器中AJAX调用发生的页面URL是什么?哪个版本的IIS以及它在经典模式下运行?IIS 7.5…我相信它在集成模式下运行