سؤال

أحصل على استثناء في كل مرة أحاول فيها إنشاء حاوية للطفرة

باستخدام الرمز التالي


CloudStorageAccount storageAccInfo;
CloudBlobClient blobStorageType;
CloudBlobContainer ContBlob;

blobStorageType = storageAccInfo.CreateCloudBlobClient();

//then I initialize storageAccInfo

ContBlob = blobStorageType.GetContainerReference(containerName);
//everything fine till here ; next line creates an exception

ContBlob.CreateIfNotExist();

Microsoft.WindowsAzure.StorageClient.StorageClientException was unhandled
  Message="One of the request inputs is out of range."
  Source="Microsoft.WindowsAzure.StorageClient"
  StackTrace:
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
       at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImplWithRetry[T](Func`2 impl, RetryPolicy policy)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist(BlobRequestOptions options)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist()
       at WebRole1.BlobFun..ctor() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 58
       at WebRole1.BlobFun.calling1() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 29
       at AzureBlobTester.Program.Main(String[] args) in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\AzureBlobTester\Program.cs:line 19
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Net.WebException
       Message="The remote server returned an error: (400) Bad Request."
       Source="System"
       StackTrace:
            at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
            at Microsoft.WindowsAzure.StorageClient.EventHelper.ProcessWebResponse(WebRequest req, IAsyncResult asyncResult, EventHandler`1 handler, Object sender)
       InnerException: 

هل يا رفاق knw ما الذي أفعله خطأ؟

هل كانت مفيدة؟

المحلول

أظن أن اسم الحاوية الذي تستخدمه ينتهك قواعد التسمية. الشيك http://msdn.microsoft.com/en-us/library/dd135715.aspx.

نصائح أخرى

لدي نفس الاستثناء. الحل: تغيير أسماء الحاويات إلى الحالة السفلية.

مع استثناء:

CloudBlobContainer container = blobClient.GetContainerReference("Script");
container.CreateIfNotExist();

يعمل بشكل جيد:

CloudBlobContainer container = blobClient.GetContainerReference("script");
container.CreateIfNotExist();

في حالتي ، كان المحاكي قديمًا. بعد إيقاف المحاكي وتثبيت أحدث SDK ، ذهبت المشكلة.

يمكنك الحصول على أحدث SDK من هنا: https://azure.microsoft.com/en-us/downloads/

غالبًا ما يكون هذا ناتجًا إما اسم حاوية مع حروف علوية فيه ، أو يحتوي اسم حساب الخدمة الخاص بك (accountName = في ملف التكوين) على أحرف الحالة العليا. هذا مفجع جدا. هل يمكن لأي شخص أن يخبر Microsoft أن هذه هي 101 من النماذج. تسمح لك بيئة Azure Console بإدخال اسم حساب ، "Lameduck" على سبيل المثال ، ولكن عليك الاتصال بـ AccountName = lameduck ، أو تنفجر في وجهك برسالة خطأ غير مفهومة. عندما تدخل Lameduck في وحدة التحكم Azure ، فإنه لا يحذرك من أنه سوف ينفجر في وجهك إذا كنت تستخدم هذا الاسم بدقة. هذا مضيعة لوقتنا ، لأننا على الأقل نتوقع أن تتوقع الكثير من النباتات-الكثير مما يمكن توقعه؟ إذا لم تسمح بالاتصالات بالحالة العليا ، فلا تسمح بإنشاء الحسابات بأسماء الحالات العليا في وحدة التحكم Azure! ولكن يجب أن تكون قادرًا على التعامل مع الحالة العليا هذه الأيام. جيس!

حصلت على نفس الخطأ بالضبط. كان بسبب اسم حسابي في ConnectionString مع الأحرف الكبيرة حروف.

لم أستطع حتى الاتصال من خلال مستكشف الخادم في Visual Studio.

بعد تغيير الاسم إلى أحرف صغيرة عملت تماما.

لقد قضيت أيضًا ساعات في محاولة لفرز هذه المشكلة - أعتقد أن ريتشارد يحق له أن يحصل على صراخه!

هناك العديد من المنشورات حول اسم الحاويات التي لا تحتوي على أحرف الحالة العليا ، وما إلى ذلك. ومع ذلك ، فقد وجدت أن الاسم المرجعي لـ Blob يجب أن يمتثل أيضًا. في الواقع ، كان لدي ثلاثة انتهاكات:

  1. مثل ريتشارد ، كان لدي رسائل علوية في اسم حسابي في ملف التكوين.
  2. كان لدي رسائل علوية في اسم الحاوية.
  3. كان لدي مساحة في الاسم المرجعي.

من الصعب للغاية تعقب هذه الأخطاء المركبة إذا كانت رسائل الخطأ بلا معنى. المشكلة هي أن الخطأ يتم طرحه في نفس سطر التعليمات البرمجية بالضبط ، على الرغم من أن الأسباب قد تكون مختلفة.

استنادًا إلى مقتطف الكود الخاص بك ، يبدو أنك تتصل بـ CreateBlobClient () قبل تهيئة Storageaccinfo. أتصور أن هذا سيسبب لك مشكلة.

كانت مشكلتي أن المحاكي لم يبدأ فعليًا ولم أدرك ذلك. http://mhuensch.azurewebsites.net/azure-storage-wont-start/

لم يكن يبدأ لأن المحاكي يستخدم المنفذ 10000 وكان هناك تعارض مع هذا المنفذ.

يمكن أن تحتوي مراجع Blob فقط على أحرف صغيرة - ربما تسير في هذا؟ انا كنت.

في حالتي ، وجدت أنه يجب تحديث محاكي التخزين ، وأدركت ذلك StorageException استثناء والتحقق من RequestInformation الخاصية التي ، بدورها ، خاصية سلسلة أخرى مسماة HttpStatusMessage. قالت تلك الرسالة:

لا يتم دعم إصدار REST من هذا الطلب بواسطة هذا الإصدار من محاكي التخزين. يرجى ترقية محاكي التخزين إلى أحدث إصدار. الرجوع إلى عنوان URL التالي لمزيد من المعلومات: http://go.microsoft.com/fwlink/؟linkid=392237

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top