微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 在IIS6上使用jqGrid和ASP.NET MVC 2找不到POST Ajax调用结果

这令我感到困惑.我将一个MVC 2应用程序部署到IIS6,除了我的jqgrid调用获取数据之外,一切正常.

一切都在我的开发机器上,但这里是我正在使用的两个URL

本地开发Web服务器:

POST http://localhost:port/Ctrl.mvc/JsonMethod

IIS6(注意https – 不确定是否重要)

POST https://www.domain.com/AppName/Ctrl.mvc/JsonMethod

一个URL导致HTTP 404,这真的令人困惑,因为它在我的本地机器上运行良好.使用[AcceptVerbs(HttpVerbs.Post)]正确声明JsonMethod

如果需要更多信息,请告诉我 – 我感谢您的任何帮助!

编辑相当疏忽我…

我的所有JSON请求都是/Ctrl.mvc/JsonMethod.好吧,在IIS服务器上,代码位于子文件夹–AppName中.因此,我得到404,因为找不到https://domain/Ctrl.mvc/JsonMethod – 这是正确的.

基本上,我需要在部署时更改我的JSON请求 – 我真的不喜欢,但也许有更好的方法

解决方法

看看 Deploy asp.net mvc beta to iis 6 causing 404’shttp://blog.stevensanderson.com/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/.

您的应用程序中是否有更多使用POST的URL?它们有效吗?你有没有像.aspx或.mvc这样的扩展名的网址吗?它们有效吗?

更新:我在像你这样的所有JavaScripts中遇到了我的URL的不同基本/根部分的问题.因为你使用jqgrid,我认为你有同样的问题.如果我在Web服务器上的虚拟目录中发布我的解决方案,那么所有调用我的JavaScripts的URL都将被更改.所以我给window.location.pathname并用’/’拆分,然后我发现一个新的rootPath对应于新的位置.这种重新定位的URL我放在一个函数中,我在我的解决方案的所有JavaScripts中调用.租用的代码片段与我的网站完美配合:

var pathArray = window.location.pathname.split( '/' );
var rootPath = '';
for (var i = 0; i < pathArray.length; i++) {
    var p = pathArray[i];
    if (p === "") {
        continue;
    }

    if (p.toLowerCase() !== 'home') {
        rootPath += '/';
        rootPath += p;
    } else {
        break;
    }
}
this.urlBase = rootPath + '/Repository.svc';
this.urlExportBase = rootPath + '/ExportToExcel';

解决方案并不完美,但它确实有效.可能是您应该更改此“变基”功能,使其与您一起工作.

原文地址:https://www.jb51.cc/aspnet/249135.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐