Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Azure App Service Error 405 - The request could not be completed. (Method Not Allowed)

I'm working with Azure App Service .NET backend with a Xamarin.iOS app. I am able to successfully register a new user and I can see the user's details in the database. I have a custom ApiController, which handles the registration and the I'm able to save the details with a successful POST call.

However, when I try to log into the app, I get the following error:

{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The request could not be completed.  (Method Not Allowed) 

Below is my code:

The RegistrationController in the backend which successfully makes a POST call

[MobileAppController]
[RoutePrefix("api/register")]
[AllowAnonymous]
public class RegisterController : ApiController
{

     [HttpPost]
    [Route("newuser")]
    public HttpResponseMessage NewUser(RegistrationRequest request)
    {
        // Registration code in here

    }

}

This is how I call this function on the client side:

public async Task<Result<UserProfile>> RegisterUser(RegistrationWrapper registrationrequest)
    {
        try
        {
            var registrationRequest = new JObject();
            registrationRequest.Add("username", registrationrequest.username);
            registrationRequest.Add("password", registrationrequest.password);
            registrationRequest.Add("email", registrationrequest.email);
            registrationRequest.Add("phone", registrationrequest.phone);
            registrationRequest.Add("firstname", registrationrequest.firstname);
            registrationRequest.Add("lastname", registrationrequest.lastname);

            var result = await client.InvokeApiAsync("register/newuser", registrationRequest);


     // Handle result here

        }
        catch (Exception ex)
        {
            return Result<UserProfile>.Failure(ex.Message + ex.StackTrace + ex.InnerException);
        }

    } 

Custom AuthController which handles the login

This POST call fails with the error described above.

 [MobileAppController]
[RoutePrefix("api/auth")]
public class AuthController : ApiController
{
    public HttpResponseMessage Post(AuthenticationRequest credentials)
    {
        try
        {
              //Authentication code goes here

          catch (Exception e)
        {
            Console.WriteLine("Ërror :" + e.Message);
            Console.WriteLine(e.StackTrace);
            return Request.CreateResponse(HttpStatusCode.InternalServerError, new
            {
                Stacktrace = e.StackTrace,
                ErrorMessage = e.Message,
                Credentials = credentials
            });
        }


    }

How I invoke this function from the client side

 async Task<Result<Account>> Login(string username, string password)
    {
        try
        {
            var credentials = new JObject();
            credentials.Add("username", username);
            credentials.Add("password", password);
            var result = await client.InvokeApiAsync("auth", credentials);


          //Handle result here

        }
        catch (Exception ex)
        {
            return Result<Account>.Failure(ex, ex.Message + ex.StackTrace);
        }

    }

}

I'm not sure why it's failing during the log in. Any ideas?

like image 735
naffie Avatar asked Dec 08 '25 17:12

naffie


1 Answers

After trying tons of solutions found here on StackOverflow, the one that finally worked for me was this first answer found on a similar question.

It seems that the http POST call is redirected to https.

After enabling authentication on your App Service in the Azure portal, you need to change the url to https.

So I changed mine from this:

http//{my_site}.azurewebsites.net

To this:

https//{my_site}.azurewebsites.net

On the client side, and now used this new one to create my local sync tables. Everything works as expected now.

like image 132
naffie Avatar answered Dec 11 '25 11:12

naffie



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!