我有一个位于世界另一端的远程团队通过VPN访问我们的系统,然后通过citrix进入远程桌面会话以连接到visual studio环境。我们的网站使用Azure消息队列和Azure存储帐户来保存这些消息,因为它们与我们的数据仓库进行通信,当我们发布代码并从我们的暂存环境运行时,这一切都很有用。
但是,当我们的离岸团队在本地运行该站点以执行测试时,他们在尝试将消息发送到消息队列时经常会收到403错误。
我认为这与Citrix配置文件以及它们运行代码的位置和天蓝色系统之间的时间差有关,因此我们让我们的帮助台修改配置文件,以便Citrix不会使用开发人员的时区但是没有工作。
任何帮助都会很棒
以下是发生错误的代码段:
public class AzureMessageQueue : IMessageQueue
{
private readonly Microsoft.WindowsAzure.Storage.QueueCloudQueue queue;
public AzureMessageQueue(string connectionString, string queueName, int retrySeconds = 60, int messageBatchSize = 30)
{
queue = CloudStorageAccount
.Parse(connectionString)
.CreateCloudQueueClient()
.GetQueueReference(queueName);
queue.CreateIfNotExists();
//...
}
//...
}
堆栈追踪:
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.Exists(Boolean primaryOnly, QueueRequestOptions options, OperationContext operationContext)
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.CreateIfNotExists(QueueRequestOptions options, OperationContext operationContext)
at [MyCompany].AzureMessageQueue..ctor(String connectionString, String queueName, Int32 retrySeconds, Int32 messageBatchSize)
...
使用的连接字符串采用以下形式:
DefaultEndpointsProtocol=https;AccountName=[account name];AccountKey=[account key]
我验证了密钥仍处于活动状态,并且当其他位置执行应用程序时,此连接字符串可以正常工作。