c# - اكتشاف إذا كان التطبيق.NET قيد التشغيل في أزور أو على بيئة غير أزور




azure azure-role-environment (3)

نحن نتحرك حاليا بعض حالات طلبنا إلى أزور، ولكن سوف لا تزال تحافظ على التوافق إلى الوراء مع الحالات الموجودة التي ليست أزور استضافتها.

هل هناك طريقة جيدة لاكتشاف البيئة بدون تثبيت سك على خادم إنتاج غير أزور؟

لقد حاولت استخدام:

if (RoleEnvironment.IsAvailable)

من Microsoft.WindowsAzure.ServiceRuntime، وأنها تعمل محليا تماما، وفي أزور. ومع ذلك، أنا بحاجة إلى تعيين Microsoft.WindowsAzure.ServiceRuntime.dll إلى كوبيلوكال، وحتى ذلك الحين أحصل على:

تعذر تحميل الملف أو التجميع 'مسشرتمي، فيرسيون = 2.2.0.0، كولتور = نيوترال، بوبليكيتوكين = 31bf3856ad364e35' أور وان أوف ذي ديبندنسس

هناك لا يبدو أن يكون حزمة نوجيت، وأنا لا أريد أن نسخ يدويا مسشرتمي دل حول.

ربما هناك طريقة للكشف دون الاعتماد على Microsoft.WindowsAzure.ServiceRuntime؟


للأسف أسهل طريقة لحل هذا هو نسخ ملف msshrtmi.dll من:

C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\{version}\bin\runtimes\base\x64

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

سيكون بديل قابل للتطبيق لإضافة قيمة تكوين في appSettings وتطبيق تحويل التكوين عند إنشاء تطبيق أزور.


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


يمكنك محاولة استدعاء التجميع. تحميل على msshrtmi, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 التجمع، وإذا فشل ثم لا تحاول استدعاء الأسلوب RollEnvironment.IsAvailable (كما تعلمون أنت بالتأكيد لا يعمل على أزور).

بدلا من ذلك يمكنك محاولة استخدام ماشيننام، كما تبدأ كل أزور مثيلات مع "أردي"







azure-service-runtime