Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Authentication failed error when calling web method using $.ajax

When I make a JQuery call, I get an Authentication failed response:

{
    Message: "Authentication failed.", 
    StackTrace: null, 
    ExceptionType: "System.InvalidOperationException"
}

jQuery call:

$(document).ready(function () {
    //Handle the change event for the drop down list
    $("#ddRegions").change(function () {
        //create the ajax request
        $.ajax({
            type: "POST", //HTTP method
            url: '<%= ResolveUrl("WebForm2.aspx/getLocations")%>', //page/method name
            data: "{}", //json to represent argument
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) { //handle the callback to handle response                
                //request was successful. so Retrieve the values in the response.
                alert(msg.toSource());
            }
        });
    });
});

The web method:

public static string getLocations() {
    System.Diagnostics.Debug.WriteLine("Getting Locations.");
    return "{region:auckland, city:auckland}";
}

I added the following to my web.config:

<authorization>
    <allow users="*" />
</authorization>
<authentication mode="None" />

And I tried setting the AutoRedirectMode to Off in RouteConfig.cs. This stops the error, but still the web method never gets called. Any suggestions?

like image 782
Aaz Avatar asked Apr 28 '15 06:04

Aaz


1 Answers

Resolved by setting AutoDirectMode to Off in App_Start/RouteConfig.cs

settings.AutoRedirectMode = RedirectMode.Off;

and adding a ScriptManager to the aspx page that has an EnablePageMethods set to 'true':

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
    </asp:ScriptManager>
like image 97
Aaz Avatar answered Oct 20 '22 23:10

Aaz