【问题标题】:Calling Azure Function app works in console but not in xamarin forms调用 Azure Function 应用程序在控制台中有效,但在 xamarin 表单中无效
【发布时间】:2020-09-06 17:06:06
【问题描述】:

所以我创建了一个 Get 请求函数。该函数所做的只是从 SQL 数据库中检索一些数据并将其返回。

我在控制台应用程序中调用此函数,只是为了对其进行测试,并且一切正常。 然后我复制代码并将其粘贴到我的 Android 版 xamarin.forms 应用程序中。 当我运行它时,它会立即给我一个 404 Not found 响应。

知道为什么它不能在 xamarin 应用程序中运行,而是在控制台应用程序中运行吗?

using (var client = new HttpClient())
        using (var request = new HttpRequestMessage(HttpMethod.Get, "http://{MySite}.azurewebsites.net/api/{myfunction}/"))
        using (var httpContent = CreateHttpContent(new DiaryDate() { Date = DateTime.Today }))
        {
            request.Content = httpContent;
            
            using (var response = await client
                .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken)
                .ConfigureAwait(false))
            {
                if (response.IsSuccessStatusCode)
                {
                    // do something
                }
            }
        }

CreateHttpContent 只是将给定的对象转换为 JSON。

【问题讨论】:

  • 请贴出相关代码
  • @Jason 对不起,在完成之前点击帖子。孩子们!

标签: c# xamarin.forms azure-functions


【解决方案1】:

将 URL 更新为 https 方案 (https://{MySite}.azurewebsites.net/api/{myfunction}/)。首先,没有理由选择非安全通道。 Azure Function 端不需要任何更改即可使用 https。其次,正如另一个答案中所指出的,http 客户端存在限制,需要调整才能解除阻塞。

更新:在这个特定的调用中,您使用的是 Http GET,但发送的是请求内容(DiaryDate 对象的 json)。因此,它将通过 URL 中的查询字符串发送。虽然我还不确定它在控制台应用程序中的工作方式(可能与它在 Xamarin/Mono http 处理程序中的处理方式与 GET 请求中控制台应用程序中的 .net 核心的处理方式有关),但它应该是 POST 当然可以。您可以在创建HttpRequestMessage 的行中将HttpMethod.Get 更改为HttpMethod.Post

【讨论】:

  • https 没有区别
  • 您可以从应用程序访问任何其他公共网站吗?或者您可以通过docs.microsoft.com/en-us/xamarin/essentials/connectivity检查连接。
  • 我可以从同一站点访问其他 azure 功能。它似乎只是在 xamarin 中不起作用的这一功能。另一件需要注意的事情是它执行得非常快以给出 404 响应。即使没有数据要返回,控制台应用程序也需要更长的时间,比如 5 到 10 秒。
  • 当你说“我可以从同一个 site 访问其他 azure 功能”时,“site”是指你的 Xamarin 应用程序还是什么?还有吗?
  • 我在函数 App 中有 3 个不同的函数。其中 2 个在 xamarin 应用程序中运行良好。 1不要。所有 3 个都在控制台应用程序中工作。
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多