Microsoft.WindowsAzure.Storage.StorageException-服务器正忙 语言:C# 框架:.NET 4.5 Nuget:WindowsAzure.Storage版本8.0.1

Microsoft.WindowsAzure.Storage.StorageException-服务器正忙 语言:C# 框架:.NET 4.5 Nuget:WindowsAzure.Storage版本8.0.1,c#,.net,azure,azure-table-storage,C#,.net,Azure,Azure Table Storage,嗨 我看到Microsoft.WindowsAzure.Storage.StorageException在生产站点的日志中不时显示“服务器正忙”。有没有人对如何摆脱这种行为有任何经验或专业建议。我是否应该更改Azure门户中的某些设置,或者对我的代码执行一些操作 调用下面示例中的公共静态IEnumerable Get(string sentTo)时会发生错误 代码: private静态云表GetMessageTable() { var storageAccount=CloudStorageAcc

我看到Microsoft.WindowsAzure.Storage.StorageException
在生产站点的日志中不时显示“服务器正忙”。有没有人对如何摆脱这种行为有任何经验或专业建议。我是否应该更改Azure门户中的某些设置,或者对我的代码执行一些操作

调用下面示例中的
公共静态IEnumerable Get(string sentTo)
时会发生错误

代码:

private静态云表GetMessageTable()
{
var storageAccount=CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(“StorageConnectionString”);
var tableClient=storageAccount.CreateCloudTableClient();
var table=tableClient.GetTableReference(CloudConfigurationManager.GetSetting(“MessageTable”);
尝试
{
如果(!table.Exists())
table.Create();
}
捕获(例外e)
{
//日志错误
}
返回表;
}
公共静态IEnumerable Get(字符串sentTo)
{
var table=GetMessageTable();
var query=new TableQuery().Where(TableQuery.GenerateFilterCondition(“PartitionKey”,QueryComparisons.Equal,sentTo));
var result=table.ExecuteQuery(查询);
返回result.OrderByDescending(r=>r.SentDate);
}
日志:

Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(503)服务器不可用。-->System.Net.WebException:远程服务器返回错误:(503)服务器不可用。
在System.Net.HttpWebRequest.GetResponse()中
在c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor\Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy,OperationContext OperationContext)中
---内部异常堆栈跟踪的结束---
在c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor\Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy,OperationContext OperationContext)中
在Microsoft.WindowsAzure.Storage.Table.TableQuery`1.c__显示c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Table\TableQuery.cs:第430行中的Class7.b__;6(IContinuationToken continuationToken continuationToken)
在c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\Common\Core\Util\CommonUtility.d\uu 0`1.MoveNext()中的Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility中:第322行
在System.Linq.Buffer`1..ctor处(IEnumerable`1源)
在System.Linq.OrderedEnumerable`1.d_uu1.MoveNext()中
at System.Linq.Enumerable.Count[TSource](IEnumerable`1源,Func`2谓词)
在***删除***
请求信息
请求ID:**已删除***
请求日期:2017年4月11日星期二15:30:30 GMT
状态消息:服务不可用
错误代码:服务器正忙
ErrorMessage:服务器正忙。
请求ID:**已删除***
时间:2017-04-11T15:30:31.0229653Z

该错误表明您的应用程序正被Azure存储表服务限制

调查这些问题的一个好方法是启用存储分析指标,并查看您的应用程序是否在存储可伸缩性目标范围内。有用于请求数和限制错误数的事务度量

<>从代码中,考虑到如果还没有的话,添加客户端重试。如果可以的话,我通常也建议避免分区键扫描,但是如果不知道应用程序的性质,很难提供额外的注释

private static CloudTable GetMessageTable()
{
    var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
    var tableClient = storageAccount.CreateCloudTableClient();
    var table = tableClient.GetTableReference(CloudConfigurationManager.GetSetting("MessageTable"));

    try
    {
        if (!table.Exists())
            table.Create();
    }
    catch (Exception e)
    {
        // Log err
    }

    return table;
}

public static IEnumerable<MessageEntity> Get(string sentTo)
{
    var table = GetMessageTable();
    var query = new TableQuery<MessageEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, sentTo));

    var result = table.ExecuteQuery(query);
    return result.OrderByDescending(r => r.SentDate);
}
Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (503) Server Unavailable. ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable.
   at System.Net.HttpWebRequest.GetResponse()
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 677
   --- End of inner exception stack trace ---
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 604
   at Microsoft.WindowsAzure.Storage.Table.TableQuery`1.<>c__DisplayClass7.<ExecuteInternal>b__6(IContinuationToken continuationToken) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Table\TableQuery.cs:line 430
   at Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.<LazyEnumerable>d__0`1.MoveNext() in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Core\Util\CommonUtility.cs:line 322
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
   at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source, Func`2 predicate)
   at *** removed ***
Request Information
RequestID:*** removed ***
RequestDate:Tue, 11 Apr 2017 15:30:30 GMT
StatusMessage:Service Unavailable
ErrorCode:ServerBusy
ErrorMessage:The server is busy.
RequestId:*** removed ***
Time:2017-04-11T15:30:31.0229653Z