ASP.NET 500 Internal Server Error while calling webmethod from javascript

I’m trying to call the webmethod fucntionality using AJAX but unable to get the appropriate results. I have googled my problem and found many solution but those didn’t worked for me. Please guide me what I’m doing wrong. Help will be appreciated.

Cheers

Code Snippet

 function checkUserNameExists() {

//initialization
var pagePath = window.location.pathname + "/getUsername";
var value = document.getElementById('control_userName').value;
var dataString = "{ 'value':'" + value + "' }";
$.ajax({
    type: "GET",
    url: pagePath,
    data: dataString,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error:
            function (XMLHttpRequest, textStatus, errorThrown) {

            },
    success:
            function (result) {
                var flag = true;
                if (result != null) {
                    flag = result.d;
                    if (flag == "True") {
                        alert('okay fine you are good');
                    }
                    else {
                        alert('try again');
                    }
                }
            }
});
 }

Method in Behind Code file

    [WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public string getUsername(string value)
    {
        return "True";
    }

EXCEPTION

 ExceptionType: "System.InvalidOperationException"
  Message: "An attempt was made to call the method 'getUsername' using a        POST request, which is not allowed."

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

First, it the webmethod is in the page class, and not in a Webservice class, then it should be static.

Second, the data transfered is not really a string, but an object, so change it to:

var dataString = { 'value':  value  };

Third thing, “type” is for older versions of jquery, you should either change your ajax call to:

method: "GET",
url: pagePath,
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",...

Or change the function in the server side to get post calls, by removing the

UseHttpGet = true

Method 2

Probably you need to add static to your method declaration as below

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string getUsername(string value)
{
   return "True";
}

if this isn’t the case, you could F12 the browser->network then click on the error message to see it briefly.

Concerning the reported issue,the problem with get request, try to make it post

Method 3

The Answer is here :link

the problem is with the annotation I was using the [ScriptMethod(UseHttpGet = true)] which causing the error. just change the value from true to false.

Method 4

This is not specific to this question but you can check a few things to get better understanding of what is causing the issue.

  • Check the status code and type of request in the General section of
    Request Headers.
  • Check the Response Headers if there is any json error.
  • Check the Response to get the message, stacktrace and exception
    type.
  • Check the Request Payload section in Headers for parameters
    passed.

Check this post for more detail.

Method 5

In my case the problem was the “data” field (both cases, GET and POST). As a test, remove the “data” from the AJAX call and also remove the web method parameter, if it works, then the problem is the format of the “data” field:

$.ajax({
   type: "GET",
   url: pagePath,
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   ...

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string getUsername()
{
    return "True";
}

Some examples:

data: JSON.stringify({ "parameter": variable })     WORKS
data: JSON.stringify({ parameter: variable })       WORKS
data: '{"parameter": "' + variable + '"}'           WORKS
data: '{parameter: ' + variable + '}'               don't works 
data: JSON.stringify({ 'parameter': 'value' })      WORKS
data: '{"parameter":"value"}'                       WORKS
data: "{'parameter':'value'}"                       WORKS
data: '{parameter:value}'                           don't works
data: {parameter:value}                             don't works
data: {"parameter":"value"}                         don't works
data: {'parameter':'value'}                         don't works

Method 6

in my case the error was due to incorrect parameter names was defined in jquery ajax call.

Do check the parameter name, also make sure the webmethod function is defined as static in .cs page.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x