【问题标题】:Azure App Service Error 405 - The request could not be completed. (Method Not Allowed)Azure 应用服务错误 405 - 无法完成请求。 (不允许的方法)
【发布时间】:2017-12-17 03:09:18
【问题描述】:

我正在使用带有 Xamarin.iOS 应用的 Azure App Service .NET 后端。我能够成功注册一个新用户,并且可以在数据库中看到用户的详细信息。我有一个自定义 ApiController,它处理注册,并且我可以通过成功的 POST 调用保存详细信息。

但是,当我尝试登录应用程序时,我收到以下错误:

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

下面是我的代码:

后端成功发起 POST 调用的 RegistrationController

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

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

    }

}

这就是我在客户端调用这个函数的方式:

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);
        }

    } 

处理登录的自定义 AuthController

此 POST 调用失败并出现上述错误。

 [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
            });
        }


    }

我如何从客户端调用这个函数

 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);
        }

    }

}

我不确定为什么它在登录过程中失败。有什么想法吗?

【问题讨论】:

    标签: azure xamarin.ios azure-web-app-service


    【解决方案1】:

    在尝试了在 StackOverflow 上找到的大量解决方案之后,最终对我有用的是在类似的 question 上找到的第一个答案。

    http POST 调用似乎被重定向到 https

    在 Azure 门户中对您的应用服务启用身份验证后,您需要将 url 更改为 https。

    所以我改变了我的:

    http//{my_site}.azurewebsites.net
    

    到这里:

    https//{my_site}.azurewebsites.net
    

    在客户端,现在使用这个新的来创建我的本地同步表。 现在一切正常。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2021-08-16
      • 2017-11-18
      • 2020-03-05
      • 2015-01-28
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多