代码之家  ›  专栏  ›  技术社区  ›  Dan

在iis6上使用jqgrid和asp.net mvc 2未找到post-ajax调用结果

  •  1
  • Dan  · 技术社区  · 15 年前

    这让我困惑。我在iis6上部署了一个MVC 2应用程序,除了我的jqgrid调用来获取数据外,一切都正常工作。

    在我的开发机器上一切都很好,但下面是我正在使用的两个URL

    本地dev Web服务器:

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

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

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

    后一个URL会产生一个HTTP404,这非常令人困惑,因为它在我的本地机器上都工作得很好。这个 JsonMethod 正确声明 [AcceptVerbs(HttpVerbs.Post)]

    如果需要更多的信息,请告诉我-我非常感谢您的帮助!

    编辑 对我来说是个很大的疏忽。

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

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    8 年前

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

    您的应用程序中是否有更多使用Post的URL?他们在工作吗?是否有更多没有扩展名的URL,如.aspx或.mvc?他们在工作吗?

    更新的 :在所有像您这样的javascript中,我的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';
    

    解决方案并不完美,但它是有效的。可能是你应该改变这个“重新平衡”功能,让它与你的一方一起工作。

        2
  •  2
  •   Annagram    15 年前

    使用MVC助手为jqgridAjax函数生成URL,以确保使用正确的URL。

    $('#mygrid').jqGrid({ 
        url: '<%= Url.Action("MyControllerJsonAction", Model.RouteValues) %>' 
    });
    
        3
  •  0
  •   sirili    11 年前

    当我使用VS2012将我的项目(MVC+Kendo-UI)发布到iis6.0时,问题就出现了。 F12调试错误是404,Chrome说找不到页面。

    这是因为在URL中添加doamin时,URL不正确:

    正确的代码是:

    function QueryExpSendList() {
    var EValid = true;
    var uri = AJAXBaseUrl;
    if (AJAXBaseUrl.indexOf("localhost") > 0) {
        uri = AJAXBaseUrl + "AJAX/QuerySendList/";
    }
    else {
        uri = AJAXBaseUrl + "KQExpress/AJAX/QuerySendList/";
    }
    GenerateExpressSendGrid(uri);
    $("#QueryResult").show();
    

    }

    错误代码:

    function QueryExpSendList() {
    var EValid = true;
    var uri = AJAXBaseUrl + "AJAX/QuerySendList/";
    GenerateExpressSendGrid(uri);
    $("#QueryResult").show();
    

    }

    作者:sirili@163.com