在asp.net mvc应用程序中,我有一个方法可以将JsonResult返回给视图。它在我的本地机器上运行得很好,但是当应用程序部署在Web托管服务器上时,当我尝试通过点击视图的链接获取此数据时,我在Firebug中找到了404 Not Found。是否有人知道可能发生这种情况的可能原因?我的生成路径的代码片段如下:
private void get_info()
{
var serviceUri = new Uri("/getcountrydata/" + country_name + "/" + arms[0].Name + "/" + arms[1].Name + "/" + arms[2].Name + "/" + arms[3].Name, UriKind.Relative);
var webClient = new WebClient();
webClient.OpenReadCompleted += openReadCompleted;
webClient.OpenReadAsync(serviceUri);
}
下面的Global.asax路由:
routes.MapRoute(
"getcountrydata",
"getcountrydata/{country}/{indicator1}/{indicator2}/{indicator3}/{indicator4}",
new { controller = "Home", action = "getcountrydata" }
);
getcountrydata方法如下:
public JsonResult getcountrydata(string country, string indicator1, string indicator2, string indicator3, string indicator4)
{
LegoData legoData = captainClimateRepostory.GetLegoData(country, indicator1, indicator2, indicator3, indicator4);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(LegoData));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, legoData);
return Json(ms.ToArray(), JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:3)
我认为您为该操作提供的网址存在问题。它与主机服务器无关。检查这个SO帖子..
jquery ajax call to JsonResult controller method results in 404 on IIS6
答案 1 :(得分:1)
在Silverlight内部,您可以构建相对于托管XAP的页面的URL:
Uri uri = new Uri(HtmlPage.Document.DocumentUri, "../getcountrydata/");
更好 - 相对于您的XAP:
Uri uri = new Uri(App.Current.Host.Source.AbsoluteUri, "../getcountrydata/");
此处提供更多信息:http://weblogs.asp.net/lduveau/archive/2009/03/13/get-silverlight-xap-and-hosting-page-url.aspx
答案 2 :(得分:0)
Tanveer-Ibn- Haresh是正确的 - 您正在提供一个URL假定应用程序正在根运行。我的教程[使用DropDownList框和jQuery] [1] [1]:http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc显示了如何正确执行此操作。