استثناء عند حذف الرسالة من قائمة انتظار Azure؟
-
01-10-2019 - |
سؤال
أنا أغمس أصابع قدمي في Windows Azure ، وأنا أواجه شيئًا يجب أن يكون بسيطًا ، لكنني لا أستطيع رؤيته.
لدي هذا الاختبار الصغير للعب مع قوائم قوائم Azure:
public void CanPublishSillyLittleMessageOnQueue()
{
var queueClient = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudQueueClient();
var testQueue = queueClient.GetQueueReference("testqueue1");
testQueue.CreateIfNotExist();
var message = new CloudQueueMessage("This is a test");
testQueue.AddMessage(message);
CloudQueueMessage received;
int sleepCount = 0;
while((received = testQueue.GetMessage()) == null)
{
++sleepCount;
Thread.Sleep(25);
}
testQueue.DeleteMessage(received);
Assert.Equal(message.AsString, received.AsString);
}
يرسل الرسالة على ما يرام - يمكنني رؤيتها في جدول SQL. ومع ذلك ، عندما يضرب طريقة "testqueue.deletemessage (المستلمة)" ، أحصل على هذا:
TestCase 'AzureExploratory.PlayingWithQueues.CanPublishSillyLittleMessageOnQueue'
failed: System.ArgumentNullException : Value cannot be null.
Parameter name: str
at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImplWithRetry(Func`1 impl, RetryPolicy policy)
at Microsoft.WindowsAzure.StorageClient.CloudQueue.DeleteMessage(CloudQueueMessage message)
PlayingWithQueues.cs(75,0): at AzureExploratory.PlayingWithQueues.CanPublishSillyLittleMessageOnQueue()
الذي يبدو أنه فشل في مكان ما داخل الشجاعة في Azure SDK.
أنا أستخدم VS 2010 ، .NET 4.0 ، Azure SDK V1.2 ، 64 بت Win 7. خدمة متجر المطورين تعمل ؛ أستطيع أن أرى الرسائل تذهب إلى قائمة الانتظار ، لا يمكنني حذفها.
أي شخص رأى أي شيء مثل هذا؟
المحلول
لقد اكتشفت ما يحدث. كان الكود المعني يعمل في تسخير اختبار Xunit. تبين أن عداء Xunit لا يقوم بإعداد AppDomain مع مسار ملف التكوين افتراضيًا. System.Uribuilder يضرب الآن ملف التكوين ، لذلك ينفجر.
كان الحل البديل هو إضافة app.config فارغ إلى مشروع الاختبار. الآن يعمل.
أرغ!