AJAX Webmethod调用在MVC3上返回404

MHT*_*Tri 2 ajax extjs http-status-code-404 asp.net-mvc-3

我一直在使用EXTJS 4并在.aspx页面的代码隐藏处通过AJAX调用加载我的商店到Webmethod.这个方法适用于我的所有项目,直到我尝试将EXTJS 4工作移植到MVC3项目中.我的电话现在正在返回404.

关键部分是项目(和EXTJS4 webmethod调用)在我的同事的机器上运行 - 只有我的机器受到'404'错误的影响.任何Webmethod调用,无论是他们的一个或由我编写,都会返回"未找到资源".这是怎么回事?

一些代码如果有帮助:加载商店:

Ext.define('pr.store.Store-Items', {
    extend: 'Ext.data.Store',
    model: 'pr.model.Model-Items',
    pageSize: 200,
    groupField: 'groupID',
    autoLoad: { params: { start: 0, limit: 200 } },
    proxy: {
        type: 'ajax',
        //get data from json file for now
        headers: { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Content-Type': 'application/json; charset=utf-8' },
        url: '/Project/Data.ashx/GetData',           
        reader: {
            type: 'json',
            root: 'd.objects',
            totalProperty: 'd.totalCount'
        },
        extraParams: {
            where: Ext.encode(new Array(''))
            , difference: true
            , mode: 0
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

的WebMethod

 [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet=true)]
 [System.Web.Services.WebMethod]
 public static object GetData(int start, int limit, string[] where, bool difference, int mode)
 {
     //Code
 }
Run Code Online (Sandbox Code Playgroud)

小智 6

我还遇到了这个问题,所以从Web.Config中删除了以下内容.

<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)

在system.webServer> handlers中找到.


另外,我们在Global.asax.cs文件中还有以下3个附加规则:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)