asp.net mvc - 当应用程序发布到IIS时,控制器操作返回404

时间:2017-06-01 20:38:32

标签: jquery asp.net ajax asp.net-mvc iis

我有一个正在调试并在本地运行的应用程序就好了。当我将其发布到IIS时,不再找到控制器上的操作。

它返回 http://server/home/Table2?ids=122026000&ids=123201000&ids=122627000&ids=121514000&ids=123187000 404 (Not Found)

我正在使用JQuery AJAX函数将IDS传递给操作,然后返回部分视图,其中模型是从IDS中适当构造的。

控制器

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();

    }

ROUTE 这些保留为默认值......

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 array = [1,2,3,4,5]

的数组

同样,这在调试中运行良好,但现在返回404,它在Web服务器上。

思考?

更新

我能够通过将我的应用程序名称硬编码到ajax调用中来实现这一点,{application name}/Home/Table ..这可以按预期工作。我如何动态地执行此操作,以便在以其他名称部署应用程序时它将起作用?

1 个答案:

答案 0 :(得分:0)

您好,您可以尝试更改此行:$.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