Azure Easy Apis InvokeApi 方法正在调用 GET 而不是 POST

Azure Easy Apis InvokeApi Method is calling GET instead of POST

我目前正在使用 Azure 为 Xamarin.Android 应用程序创建自定义身份验证。我已成功创建我的 API,并且在使用高级 REST 客户端提交原始负载时它会正确返回值。

我现在正尝试使用 Azure 的 MobileServiceClient SDK 在 Xamarin.Android 上实现此功能,并且当使用 invokeApi 方法(如下面的代码所示)时,我收到一个异常,表明它正在调用 GET 而不是 POST。有谁知道我可能做错了什么?

ex.Message returns

"Cannot GET /api/register?username=azureAccountTest&password=testingpassword"

    public async Task RegisterAsync()
    {
        Dictionary<string, string> user = new Dictionary<string, string>
        {
            { "username", username },
            { "password", password }
        };
        try
        {
            CancellationToken ct;
            var result = await client.InvokeApiAsync("register", HttpMethod.Post, user, ct);
        }
        catch(Exception ex)
        {
            var message = ex.Message;
        }
    }

根据你的描述,我在本地测试了这个问题,我可以检索 authenticationToken 如下:

您对 InvokeApiAsync 使用了以下方法:

public Task<JToken> InvokeApiAsync(string apiName, HttpMethod method, IDictionary<string, string> parameters, CancellationToken cancellationToken = default(CancellationToken));

注意:总结了附加数据将通过查询字符串发送到。

据我了解,您可以参考以下方法通过HTTP内容发送附加数据如下:

JObject user = new JObject();
user.Add("username", "bruce");
user.Add("password", "123456");
var result = await App.MobileService.InvokeApiAsync("/.auth/login/custom", HttpMethod.Post, user, ct);

此外,在部署到 Azure 端时,您需要使用 https 端点指定 mobileAppUri。这里有一个类似的问题,你可以参考. Moreover, I would recommend you refer to adrian hall's book about Custom Authentication.

更新:

根据您的评论,我检查了自定义身份验证,并从 Adrian Hall 的书中找到了以下关于 Custom Authentication 的注释:

You must turn on Authentication / Authorization in your App Service. Set the Action to take when request is not authenticated to Allow Request (no action) and do not configure any of the supported authentication providers.