Azure 中无法访问的终结点

Posted

技术标签:

【中文标题】Azure 中无法访问的终结点【英文标题】:Unreachable endpoint from Azure 【发布时间】:2021-12-09 05:58:16 【问题描述】:

我正在尝试从 Azure 函数访问托管 json 的端点。 我可以在浏览器中或在执行代码时从我的机器访问 url。 但是从 Azure 我不断收到 406。 代码很简单,如下:

var client = new HttpClient();
client.DefaultRequestHeaders
      .Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync(endpointurl);
response.EnsureSuccessStatusCode();

当托管在 Azure 上时,这一直给我 406,而不是本地... 知道如何获取更多信息吗?如何调试/修复它?

谢谢

【问题讨论】:

尝试删除client.DefaultRequestHeaders 行的代码。如果这不起作用,那么要在 azure 上记录错误,请按照此处的步骤生成一些错误日志:***.com/a/48274991/218408 【参考方案1】:

406 是 HTTP 响应状态代码之一,表示某些内容不可接受。

根据您的代码,我们正在请求带有 Accept 标头的内容,但服务器无法满足它。

另外,由于 406 将在 4XX 下,即客户端错误响应。

在我们的例子中,我们请求服务器返回特定的内容类型。例如:接受:application/jsonapplication/xml,因此这里的服务器无法响应请求的匹配内容类型。这导致抛出406 Not Acceptable error

导致错误的最可能情况是端点 URL,它显示可以访问它。正如您提到的它在本地工作,应该有一些参数分配。就像将 local.settings.json 等连接添加到 Azure 门户中的应用程序设置,将 CORS 添加到您的端点..

检查来自MS Docs 的私有端点信息

要了解有关 406 Not Acceptable Error 的更多信息,请参阅博客,感谢airbrake.io

【讨论】:

以上是关于Azure 中无法访问的终结点的主要内容,如果未能解决你的问题,请参考以下文章