【问题标题】:Azure Method not allowed when trying to Post trough AzureMobileServices SDK尝试通过 Azure 移动服务 SDK 发布时不允许使用 Azure 方法
【发布时间】:2016-07-05 18:17:13
【问题描述】:

我将 Xamarin 和 MobileServices SDK 用于我的客户端应用程序,并使用带有 .Net 后端的 Azure。 我实现了一个 ApiController ,当通过 sdk 进行 GET cal 时,我可以成功检索数据。 这是获取代码:

public async Task<UserData> Get()
    {
        UserData newData = new UserData();
        newData.name = "null";
        ..shortened..
        return newData;
    }

我也实现了一个 POST 方法:

public async Task<UserData> Post(string ownerId)
    {
        UserData newData = new UserData();
        newData.ownerId = ownerId;
        var success = false;
        ..shortened...
        return success;
    }

我可以通过 Postman 成功调用它,但是 sdk 向我抛出了这个错误:

Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: 请求无法完成。 (方法不允许)

这是客户端代码: 获取电话:

var result = await client.InvokeApiAsync<UserData>("userData",System.Net.Http.HttpMethod.Get, null);

POST 调用

var result = await client.InvokeApiAsync<UserData, bool>("userData", ownerId, System.Net.Http.HttpMethod.Post, null);

有什么想法吗?

【问题讨论】:

  • 你能发布一些失败请求的简化代码和提琴手输出吗?
  • 我添加了后端和客户端的代码

标签: .net azure xamarin azure-mobile-services


【解决方案1】:

如果您可以通过 Postman 成功调用 SDK,那么问题一定出在您的 InvokeApiAsync 调用上。您可以通过以下两种方式之一记录客户端 HTTP 请求:

另外,请确保您在 API 控制器类中使用 [MobileAppController] 属性。见How to: Define a custom API controller

【讨论】:

  • 谢谢,我已经实现了 LoggingHandler。我发现通过邮递员进行发布请求时,参数名称必须与后端方法输入名称匹配。当我检查请求时,我可以看到:Request: POST https://api.near.lu/api/userData passedValue,我可以指定如何调用参数吗?
  • 如果您需要 JSON 有效负载,您应该创建一个 JObject 并分配值。例如。 JObject o = JObject.FromObject(new fieldName = ownerId)。见newtonsoft.com/json/help/html/CreatingLINQtoJSON.htm
  • 我不确定我是否需要它,我只是想让它工作?实现接受参数的 Post 方法的一般程序是什么?或者反过来,我上面的例子有什么问题?
  • 我不明白这个问题。在 Postman 上,我假设您使用 JSON 有效负载来设置参数名称。如果没有,您是否使用表单数据作为有效负载?
  • 所以在 Postman 上,我将这个链接作为 POST 请求发送:api.near.lu/api/…,我得到的是“真实”作为回复。困扰我的是,我在不同的文件中实现了另一个 apicontroller,并且 post 工作没有问题。但他们又在那里,帖子是唯一实施的控制......如果有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多