"405 Method not allowed" - when using ASP.NET jQuery ajax POST

13,802

Solution 1

Maybe late to the party but, try adding to your Web.Config file:

< handlers >
   ....
       < remove name="WebDAV" />
   ....
< /handlers >

This article explains what could be causing the problem:

http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications

Solution 2

405 errors often arise with the POST method. You may be trying to introduce some kind of input form on the Web site, but not all ISPs allow the POST method necessary to process the form.

All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.

http://www.checkupdown.com/status/E405.html

I would turn IIS Logging on to check requests. Also get Fiddler to see what is going on behind the scenes

Share:
13,802
Curtis
Author by

Curtis

https://curtiscode.dev

Updated on July 06, 2022

Comments

  • Curtis
    Curtis almost 2 years

    I've searched through loads of different existing SO questions related to a similar issue, but I've not been able to find anything relevant to my issue.

    I have the following jQuery code:

    $.ajax({
       url: "Index.aspx/DeclineRequest"
       , type: 'POST'
       , contentType: 'application/json; charset=utf-8'
       , dataType: 'json'
       , data: JSON.stringify({ RequestId: requestId })
    });
    

    I'm using a very similar technique to POST data on another ASP.NET web application, and this works fine. However, this application is returning the following error:

    "NetworkError: 405 Method Not Allowed - http://localhost:57255/....."

    I can't find anything different about these 2 applications, so I'm confused as to why this isn't working.

    This only difference between these 2 applications which I can think of, is that the one that is working is .NET 2.0, and the one that isn't working is .NET 3.5.

    I've tried adding the following to my web.config, but I still get the same 405 error:

    <webServices>
       <protocols>
         <add name="HttpPost"/>     
         <add name="HttpPostLocalhost"/>   
       </protocols>      
    </webServices>
    

    How can I resolve this issue?

    UPDATE (16:40): I've moved this application to IIS, and the 405 error is no longer being returned. Our development environment however is localhost only. Why would this only error on localhost?

  • Dimitri
    Dimitri about 12 years
    That's a WebMethod call format that calls DeclineRequest method defined in Index.aspx codebehind.
  • Curtis
    Curtis about 12 years
    I'm just doing this through localhost at the moment using VS 2010, so I don't have any IIS Logging.
  • Dimitri
    Dimitri about 12 years
    I have seen a lot of inconsistencies between the ways IIS and VS work. I'd try setting up IIS host and go from there.
  • Curtis
    Curtis about 12 years
    This is working fine for my other application though, running on the same machine, with almost identical code. So installing IIS doesn't seem like the solution.
  • Curtis
    Curtis about 12 years
    Even without sending any parameters, I get the same issue
  • Parv Sharma
    Parv Sharma about 12 years
    what exactly is he TYPE of the parameter there? is it some non nullable type?
  • Dimitri
    Dimitri about 12 years
    okay. But you can still get Fiddler and examine request/response
  • Curtis
    Curtis about 12 years
    I've downloaded fiddler but it's not really telling me much more than FireBug does
  • Dimitri
    Dimitri about 12 years
    contentTypeString Default: 'application/x-www-form-urlencoded' When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases.
  • Baradwaj Aryasomayajula
    Baradwaj Aryasomayajula almost 8 years
    That is defenitely not the correct answer. datatype has nothing to do with the CORS error.