【问题标题】:Cognitive Face API returning No result from Web Application认知面部 API 从 Web 应用程序返回无结果
【发布时间】:2019-08-20 00:45:56
【问题描述】:

我正在使用 Microsoft Cognitive Face API 来实现人脸检测以对人员进行身份验证并登录到应用程序。

为此,我正在创建一个 PersonGroup 并添加 Person,然后是 Face of Person。训练 Person 组等。

我想在 MVC Web 应用程序中实现它。我在 MVC Web 应用程序中编写了相同的代码。但是 API 没有返回任何东西,只是挂在 Http 请求调用上。

那么我们是否需要为 Web 应用程序获取一些不同的 API 密钥,或者我们是否需要在 Web.Config 文件中进行任何更改才能成功调用?

我在控制台应用程序和 WPF 应用程序中尝试了相同的代码。那里一切正常。

public class HttpClientHelper
    {
        HttpClient httpClient = new HttpClient();

        private const string subscriptionKey = "XXXXXXXXXXXXXXXXXXXXXXXXXX";

        private const string faceEndpoint = "https://southeastasia.api.cognitive.microsoft.com/face/v1.0/";

        public HttpClientHelper()
        {
            httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
            httpClient.BaseAddress = new Uri(faceEndpoint);
        }

        public async Task<T> GetAsync<T>(string url)
        {
            var response = await httpClient.GetAsync(url);
            string contentString = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<T>(contentString);
        }
    }


public static async Task CreatePersonGroup(UserGroup userGroup)
        {
            bool isGroupExists = false;
            PersonGroup personGroup;

            try
            {
                HttpClientHelper httpClientHelper = new HttpClientHelper();
                var response = httpClientHelper.GetAsync<PersonGroup>(string.Format("persongroups/{0}", userGroup.UserGroupId)).Result;

               isGroupExists = true;
            }
            catch (APIErrorException ex)
            {
                if (ex.Body.Error.Code == "PersonGroupNotFound")
                    isGroupExists = false;
            }

            if (isGroupExists == false)
            {
                await faceClient.PersonGroup.CreateAsync(userGroup.UserGroupId, userGroup.Name);
            }
        }

我希望相同的代码也必须在 Web 应用程序中正常工作。因为里面没有大逻辑。只是一个简单的 API 调用。

【问题讨论】:

  • "但是 API 没有返回任何内容,只是挂在 Http 请求调用上。"怎么上吊?无回复?最后超时?有什么例外吗?
  • 这不是服务问题,而是您的 UI 框架中的线程问题。你能在 UI 线程之外进行调用吗?
  • 现在一切都开始使用相同的代码了。我认为这个问题来自微软方面。解决了。​​

标签: microsoft-cognitive azure-cognitive-services face-api


【解决方案1】:
private const string faceEndpoint = 
"https://southeastasia.api.cognitive.microsoft.com/";

希望它应该可以工作

【讨论】:

  • 这是正确的,当我们使用SDK时,我们需要使用这个URL。但它不适用于使用 HttpClient 的 API 调用。无论如何,实际上它在控制台应用程序中都以两种方式工作。问题只是在某种程度上与 Web 应用程序有关。
猜你喜欢
  • 1970-01-01
  • 2016-12-31
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
相关资源
最近更新 更多