2017-06-01 93 views
0

我有一個應用程序正在調試和本地運行就好了。當我將它發佈到IIS時,控制器上的操作不再被發現。asp.net mvc - 當應用程序發佈到IIS的控制器操作返回404

它返回 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服務器上。

想法?

UPDATE

我能得到這個硬上班編碼我的應用程序名稱爲Ajax調用,使得{application name}/Home/Table。這按預期工作。我如何動態執行此操作,以便在應用程序以其他名稱部署時可以工作?

+0

看到編輯。當項目建成時,它們作爲默認值保持。 – LCaraway

+0

它在家庭控制器中 – LCaraway

+0

什麼是您的AJAX調用發生的頁面的URL? – mason

回答

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

相關問題