用于访问路径....的HTTP动词POST是不允许的

时间:2014-02-22 11:14:34

标签: c# asp.net ajax webforms webmethod

我有一个aspx文件,我想在Ajax的同一页面中请求WebMethod。但是我得到了一些错误(你可以在下面看到)实际上这个代码在更改我的服务器之前有效。

服务器配置

  • IIS 7.5
  • .Net Framwork 4
  • Windows Server 2008 R2

这是我在“Page.aspx”中的Webmethod代码

[WebMethod]
public static string deleteOpenedSegment(decimal segmentID)
{
    bool success = Helper.DeleteSegment(segmentID);
    if (success)
    {
        return "true";
    }
    else
    {
        return "false";
    }
}

这是我在Page.aspx中的Javascript方法

jQuery.ajax({
       url: 'Page.aspx/deleteOpenedSegment',
       type: "POST",
       data: "{'segmentID':" + getSelectedSegment().attr('id') + "}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (data) {
                  alert("okey");
                }
       });

这也是关于谷歌Chrome Web Developer Tool请求的捕获 enter image description here

错误记录

  

用于访问路径的HTTP谓词POST   不允许'/\ n = Page.aspx/deleteOpenedSegment'   
  System.Web.HttpException不允许使用用于访问路径'/......./Page.aspx/deleteOpenedSegment'的HTTP谓词POST。
  
  System.Web.HttpException(0x80004005):不允许用于访问路径'/......./Page.aspx/getSegmentHistory'的HTTP谓词POST。
       在System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext上下文,AsyncCallback回调,对象状态)        在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

提前感谢您的任何帮助或建议!

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。其实我没有意识到但问题是固定的。问题解决后我做了Windows更新:) 下面显示的更新可能有助于其他程序员。

enter image description here

答案 1 :(得分:0)

最近我也使用这种类型的代码,我可以毫无问题地删除我的项目,请参阅我的代码

 [System.Web.Services.WebMethod()]
        public static string DeleteCartItem(string catId)
        {
            Customer thisCustomer = Customer.Current;
            var cart = new ShoppingCart(thisCustomer.SkinID, thisCustomer, CartTypeEnum.ShoppingCart, 0, false);
            cart.RemoveItem(Convert.ToInt32(catId), false);
            var path = System.Web.HttpContext.Current.Server.MapPath("22-02-2014__000865.jpg");  
            File.Delete(path);
            return cart.TotalQuantity().ToString();    
    }