従来稼働していたService Bus Queueのプログラムが突然エラーを発生するようになりました。
--------------------------------------
型 'System.UnauthorizedAccessException' のハンドルされていない例外が Microsoft.ServiceBus.dll で発生しました
追加情報:リモート サーバーがエラーを返しました: (401) 許可されていません claim is empty. TrackingId:f1ae8661-2b46-433e-9621-c7b91c5927e3_G7, SystemTracker:digipub.servicebus.windows.net:DigipubOrder_Session, Timestamp:7/20/2016 2:18:55 AM
--------------------------------------
調べたところ、エラーの発生場所は、以下の"namespaceManager.QueueExists(queueName)"であり、権限がないとのメッセージのようです。Azure管理ポータルでConnectionStringを確認しましたが、間違いありません。
○ConnectionStringの有効期限があるのでしょうか。
○その場合には、どのように更新すればよいのでしょうか。
○あるいはService Bus Queueサービス自体のバージョンアップが影響している可能性もあると思います。その場合には、どのように対処すべきかお教えください。
○また、このような稼働中のプログラム自体に直接影響を与えるような「破壊的」バージョンアップが行われる場合、どこに事前告知が行われるのでしょうか。
--------------------------------------
(PowerShell用ライブラリのC#ソース)
public QueueClient InitializeParamWithSession(string connectionString, string queueName, bool useSession, bool? deleteAfterReceipt)
{
QueueDescription queueDescription = new QueueDescription(queueName)
{
RequiresSession = useSession
};
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
if (!namespaceManager.QueueExists(queueName))
{
namespaceManager.CreateQueue(queueDescription);
}
var GQueueClient = CreateQueueClient(connectionString, queueName, deleteAfterReceipt);
return GQueueClient;
}
public QueueClient CreateQueueClient(string connectionString,string queueName, bool? deleteAfterReceipt)
{
ReceiveMode receiveMode;
if (deleteAfterReceipt != null)
{
if (deleteAfterReceipt == true)
{
receiveMode = ReceiveMode.ReceiveAndDelete;
}
else
{
receiveMode = ReceiveMode.PeekLock;
}
return MessagingFactory.CreateFromConnectionString(connectionString).CreateQueueClient(queueName, receiveMode);
}
else
{
return MessagingFactory.CreateFromConnectionString(connectionString).CreateQueueClient(queueName);
}
}
--------------------------------------
どうぞよろしくお願いいたします。