我在mvc3.it中开发会计应用程序在visual studio 2010中正确运行。开发了一些部分之后我想通过IIS7.5上的deplploy来检查它。它正确部署但它没有达到我用来通过AJAX和jquery从数据库获取数据的控制器操作。下面是我的控制器方法。
[HttpPost]
public JsonResult AutocompleteSuggestions(string term)
{
var namelist = objSvc.GetAutoCompData(term);
return Json(namelist, JsonRequestBehavior.AllowGet);
}
下面是我的javascript函数,它使用这个控制器函数并从数据库中获取结果
$(document).ready(function () {
$(function () {
$("#AcCode").autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("AutocompleteSuggestions", "Home")', //"/Home/AutocompleteSuggestions",
type: "POST", dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.code, value: item.desc
}
}))
}
})
},
minLength: 1,
select: function (event, ui) {
event.preventDefault();
if (ui.item) {
$("#Descrip").val(ui.item.value);
$("#AcCode").val(ui.item.label);
}
}
});
});
});
在visual studio 2010中运行时它可以正常工作,并给我准确的结果。但在iis7.5中部署之后
它会给出错误NetworkError:404 Not Found
“zulfiqar/CBS/JV/@Url.Action(%22GetVNO%22%20%22JV%22)”
这里Zulfiqar是我的系统名称,cbs是应用程序名称。
我还在发布时添加了可部署的程序集。请任何人告诉我为什么这会给IIS带来错误。
注意:它在firebug html面板中给出以下错误。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/CBS/JV/@Url.Action("GetVNO“,”JV“)
答案 0 :(得分:0)
我通过在控制器中添加错误消息解决了我的问题。
[HttpPost]
public JsonResult AutocompleteSuggestions(string term)
{
try
{
var namelist = objSvc.GetAutoCompData(term);
return Json(namelist, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { ok = false, message = ex.Message });
}
}
它会在firebug中返回确切的错误。实际上它会在自动完成功能的url参数中出错。“url:'@ Url.Action(”AutocompleteSuggestions“,”Home“)',”一些非法字符被传递所以控制器没有被击中。所以我改变它,现在我的应用程序在IIS中正常工作。