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';

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....