背景
我有一个API,它使用ADOMD.Net客户机从(AAS)模型中检索数据。连接是使用一个连接字符串创建的,该连接字符串包含作为文档化的这里获得的访问令牌。
问题
API工作正常,直到AAS模型被暂停,并恢复每晚发生的事件。在此之后,模型返回一个207临时重定向响应。
The remote server returned an error: (307) Temporary Redirect.
Technical Details:
RootActivityId: 4d85e2d9-e1ec-406d-92aa-3f3e33ac4ed4
Date (UTC): 3/9/2020 1:09:05 PM标题中的位置是:
https://asazureweu10-westeurope.asazure.windows.net/webapi/xmla最初的请求(但是是由ADOMD.Net客户机而不是我提出的)是为了:
https://asazureweu5-westeurope.asazure.windows.net/webapi/xmla在我重新启动API之后,客户端开始正确地响应数据和函数。这让我相信有些东西正在被缓存,一旦API重新启动,缓存可能会被清除吗?这是连接池问题吗?
有人知道幕后发生了什么吗?知道为什么会发生这种事吗?
发布于 2020-08-12 09:30:30
这是一个已被证实的错误,已经报告给M.
微软的支持工程师说。
客户端库确实将集群信息缓存在AppDomain级缓存中,该缓存的超时时间为60分钟。但是,有一个无效代码使错误代码>= 300和<= 399上的缓存无效。在这种情况下,错误是307,所以失效逻辑应该仍然工作,只要连接关闭,然后再打开。
这个bug将在8月底,即9月初Nuget发布时进行修补。
microsoft.AnalysisServices.AdomdClient.NetCore.retail.amd64,更新:此bug已在Nuget包版本19.9.0.1-预览.中修补。
我使用的代码片段如下所示。
// Catch any error redirection errors and retry. Due to internal workings of lib, if model is scaled up or down, or paused and restarted,
// the model will come back on a different cluster, so we need to get a new connection.
catch (AdomdConnectionException ex)
{
if ((int) ((HttpWebResponse) ((WebException) ex.InnerException).Response).StatusCode >= 300
& (int) ((HttpWebResponse) ((WebException) ex.InnerException).Response).StatusCode <= 399)
{
aasConnection = await GetOpenAasConnectionAsync(customData, role);
}
else throw;
}https://stackoverflow.com/questions/60603599
复制相似问题