asp.net mvc 3:部署。 getJson url 不起作用
我有一个非常简单的 asp.net mvc3 应用程序,它使用 jquery::getJSON 调用我的控制器并通过 jquery::tmpl 获取一些数据顶部显示。
function ajaxError(jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
....
$.ajaxSetup({
cache: false,
error: ajaxError // tell me what the error was
});
var cl = $("#listcontainer");
$(cl).empty();
$.getJSON("/Home/GetSomeData", { oldData: "" }, function (data) {
$.each(data, function (i, item) {
var t = $("#listitem").tmpl(item);
$(cl).append(t);
});
});
在 IIS Express 下一切正常,但是当我将应用程序部署到 win2k8 r2 上新设置的 iis7 时,getJSON 调用失败,并通过 ajaxError 函数显示错误“未找到”。 (否则实际应用程序运行正常)。
我实际上可以通过在浏览器中键入该操作来调用该操作 - http://webservername/myapp/Home/GetSomeData - 它返回 json 给我。
这是配置错误吗?或者我不应该这样做吗?
TIA。
I have a very simple asp.net mvc3 app that uses jquery::getJSON to call into my controller and get some data top display via jquery::tmpl.
function ajaxError(jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
....
$.ajaxSetup({
cache: false,
error: ajaxError // tell me what the error was
});
var cl = $("#listcontainer");
$(cl).empty();
$.getJSON("/Home/GetSomeData", { oldData: "" }, function (data) {
$.each(data, function (i, item) {
var t = $("#listitem").tmpl(item);
$(cl).append(t);
});
});
Everything works ok under IIS express, however When I deploy the app to a freshly setup iis7 on win2k8 r2, the getJSON call fails with the error "Not Found" being displayed via the ajaxError function. (the actual app runs ok otherwise).
I can actually call the action from the browser by typing it in - http://webservername/myapp/Home/GetSomeData - and it returns the json to me.
Is this a configuration error? Or am I not supposed to be doing it like this?
TIA.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里的问题是您的 URL 是硬编码的,并且不包含您正在使用的虚拟目录。
您应该考虑使用 MVC 中内置的路由,而不是对 URL 进行硬编码。
您可以使用
UrlHelper
的Action
方法为您生成链接,例如:
The issue here is that your URLs are hardcoded and don't contain the virtual directory you're working from.
Rather than hardcode your URLs you should look at using the routing built into MVC.
You can use the
Action
method of theUrlHelper
to generate links for you such as:So that:
在这两种情况下,使用如下所示的
UrlHelper
生成正确的 URL:如果使用 razor,则最终结果如下:
Use the
UrlHelper
like below to generate the correct URL in both cases:If using razor this would end up like: