gpt4 book ai didi

exception - 身份验证失败 Azure 表存储

转载 作者:行者123 更新时间:2023-12-03 03:20:20 24 4
gpt4 key购买 nike

访问数据时,我们从表存储中收到随机错误:

System.Data.Services.Client.DataServiceClientException: <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>AuthenticationFailed</code>
<message xml:lang="en-US">Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:67cd9503-7a10-48a9-8c97-fee3906ac8cb
Time:2012-06-19T08:20:42.0670051Z</message>
</error>
at System.Data.Services.Client.QueryResult.Execute()
at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)

以下是有关该错误和我们的 Web 应用程序的一些事实:

  • 我们有 5 个中型网络服务器托管我们的网站
  • 在任何特定时间,我们的网站上都有 200-500 名访问者。他们是不断点击。
  • 每次点击时都会从表存储中加载数据,也可能会保存数据。
  • 该错误每天仅发生 20-50 次。

令我困惑的是,与正在进行的大量页面加载和 AJAX 回调相比,此错误很少发生。

这个错误的原因是什么?我们已经了解到,如果服务器时间关闭,则可能会出现时间戳问题,但为什么我们的实时服务器上的时间会错误,并且为什么错误不会不断发生?

最佳答案

好吧,我终于找到了导致我的问题的原因。我的 DataSource 类中静态和非静态内部变量的组合很糟糕:

private static CloudStorageAccount storageAccount;
private CharacterContext _context;

由于 storageAccount 变量是静态的,因此在实例化 DataSource 对象时,并发请求会竞争将其更改为不同的存储帐户:

public CharacterDataSource()
{
storageAccount = CloudStorageAccount.FromConfigurationSetting(ServiceConfigurationHelper.GetTableStorageConnectionStringConfigKey(GameInstanceName));
_context = new CharacterContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);
}

由于这个小问题,_context 对象的实例化实际上可能在访问 storageAccount.TableEndpoint.AbsoluteUri 时使用一个存储帐户,而在访问 storageAccount.Credentials 时使用另一个存储帐户。这导致了 AuthenticationFailed 错误。

绝对没有理由将 storageAccount 变量设置为静态,因此解决方案只是删除此修饰符,从那时起我们就不再出现错误。

我从 Microsoft 得到的提示是,我们对存储帐户使用了错误的凭据,这是我们在获得的堆栈跟踪中无法看到的。不知道 Microsoft 的人在哪里找到这些信息,但我很高兴联系了他们。

关于exception - 身份验证失败 Azure 表存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com