You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求Bing Search API V7访问权限审批并解决调用时的401错误

请求Bing Search API V7访问权限审批并解决调用时的401错误

看起来你遇到了Bing Search API V7的401未授权错误,虽然你提到密钥已经启用,但这类问题大多和身份验证或资源配置有关,我帮你梳理几个常见的排查方向,一步步来解决:

  • 先确认API密钥的准确性
    很多时候401都是密钥的小问题:比如复制的时候不小心带了前后空格、或者用了过期的试用密钥、甚至选错了密钥类型(虽然V7的密钥是通用的,但最好确认是对应你Azure订阅里Bing Search资源的密钥)。建议你去Azure门户重新复制一次密钥,确保没有多余字符,然后替换代码里的<KeyGuid>试试。

  • 检查请求头的拼写和有效性
    你代码里用的Ocp-Apim-Subscription-Key头是正确的,但要注意有没有拼写错误(比如把Ocp写成Opc这种低级错误)。另外,试试用TryAddWithoutValidation来添加头,避免重复添加的潜在问题:

    client.DefaultRequestHeaders.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", apiKey);
    
  • 查看Azure资源的状态和配额
    登录Azure门户找到你的Bing Search API资源,检查两个点:

    1. 资源是不是处于“运行中”状态,有没有被意外暂停;
    2. 查看“使用情况和配额”页面,确认有没有超过每月的请求配额,配额用完也会返回401错误。
  • 获取更详细的错误信息
    你当前的代码只捕获了异常消息,但401响应通常会包含具体的错误描述(比如“Invalid Subscription Key”或者“Quota Exceeded”)。建议修改代码,先获取完整的响应内容:

    try
    {
        var response = await client.GetAsync(endpoint);
        if (!response.IsSuccessStatusCode)
        {
            var errorDetails = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"❌ API响应错误: {response.StatusCode} - {errorDetails}");
            return "";
        }
        var responseString = await response.Content.ReadAsStringAsync();
        using JsonDocument doc = JsonDocument.Parse(responseString);
        // 后续解析逻辑不变
    }
    catch (Exception ex)
    {
        Console.WriteLine($"❌ Errore durante la ricerca dell'immagine: {ex.Message}");
    }
    

    这样能直接看到Bing返回的具体错误原因,定位问题会更高效。

  • 用工具先测试API可用性
    排除代码的问题,你可以用Postman或者curl直接调用API,看看能不能成功:
    比如curl命令:

    curl -H "Ocp-Apim-Subscription-Key: 你的密钥" "https://api.bing.microsoft.com/v7.0/images/search?q=test+prodotto"
    

    如果这个调用成功,说明是你代码里的问题;如果也失败,那肯定是密钥或者Azure资源的配置问题,需要回到Azure门户检查。

按照这个顺序排查,应该能很快找到问题所在。

备注:内容来源于stack exchange,提问作者Simone Spagna

火山引擎 最新活动