ما هي الأكثر شيوعا ، نموذجية الأشياء لتجنب الترميز في بلدي ASP.NET التطبيق من أجل أن تعمل تحت المتوسطة الثقة مشترك المضيف ؟

StackOverflow https://stackoverflow.com/questions/275444

سؤال

ما هي الأشياء التي متوسطة الثقة تمنعك من القيام ؟ على سبيل المثال, لقد علمت أن ثقة متوسطة تمنعك من استخدام النظام.IO.مسار.GetTempPath().ما هي الأشياء الأخرى مثل ذلك ؟

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

المحلول

فيما يلي كيفية التعرف على مشكلات الثقة وحلها.

1) ابحث في مجلدات Windows\Microsoft.NET\Framework[YOUR VERSION]\CONFIG عن الملفات:

  • web.config (هذا هو ملف التكوين الجذري)
  • web_mediumtrust.config
  • web_hightrust.config

2) تغيير web.config ليقول

<trust level="Medium" originUrl="" />

3) جرب تطبيق ASP.NET الخاص بك.فشل منجم بسبب خطأ في الإذن.

4) قم بالفرق بين web_mediumtrust.config وweb_hightrust.config في أداة فرق، مثل WinMerge.

5) انسخ الإعدادات من الأعلى إلى المتوسط ​​واحدًا تلو الآخر وشاهد مدى تأثيرها على تطبيقك.في حالتي، أشارت رسالة الخطأ إلى ConfigurationPermission، لذا كان من السهل تشخيصها.

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

مزيد من الوثائق هنا:
http://msdn.microsoft.com/en-us/library/aa302425.aspx

@Oli، تطبيقي يكون تمت استضافته في GoDaddy واضطررت إلى القيام ببعض الحلول البرمجية عندما بدأت في استخدام Lucene.NET.اضطررت إلى تعديل كود مصدر Lucene.NET لعدم استخدام GetTempPath وSystem.IO.FileInfo.

نصائح أخرى

من يستطيع التأكد؟لهذا السبب، يجب عليك التطوير بمستوى ثقة متوسط ​​محدد في web.config الخاص بك.

 <trust level="Full|High|Medium|Low|Minimal" />

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

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

أنا لن أقول لك فقط تعيين التطبيق الخاص بك لتشغيل في ثقة متوسطة ولكنه (الواضح) لن تعمل بالضرورة اذا كنت تستخدم تعديل مستوى الثقة.

هنا بعض المعلومات على تحديد مستويات الثقة في IIS.

في المسألة الوحيدة التي واجهتني هي:إذا كنت تدفع الجمعيات تأكد من السماح موثوق به جزئيا طلبات (وهي الجمعية meta-tag) وإلا فإنك لن تكون قادرة على استخدامها.

هنا مقتطف من GoDaddy أو متوسطة الثقة صفحة المعلومات:

التطبيقات التي تعمل تحت المتوسط مستوى الثقة لديهم تسجيل الوصول ، لا يمكن الوصول إلى سجل أحداث Windows و لا يمكن استخدام ReflectionPermission (ولكن يمكن استخدام التفكير).هذه يمكن لتطبيقات التواصل فقط مع مجموعة محددة من عناوين الشبكة و نظام الملفات وصول محدود إلى التطبيق الدليل الظاهري التسلسل الهرمي.

باستخدام متوسط مستوى الثقة يمنع التطبيقات من الوصول إلى مشترك موارد النظام و يزيل إمكانيات التطبيق تدخل.مضيفا OleDbPermission و OdbcPermission يسمح للتطبيقات إلى استخدام تلك البيانات من مقدمي الوصول قواعد البيانات.WebPermission تعديل للسماح الصادرة http و https حركة المرور.

التي قد لا خريطة بالضبط ما سيكون لديك للتغلب مع المضيف الخاص بك (إلا إذا كنت مع GoDaddy) لكنه مثال نموذجي.

تأكد من أن أي مكتبات/أطر عمل تابعة لجهات خارجية (تتبادر إلى ذهنك Castle) مبنية (أو يمكن بناؤها) بثقة متوسطة.

مكتبة system.runtime.serialization غير متاحة تمامًا في الثقة المتوسطة.

لقد قمت بترميز هذا من أجل تسلسل/إلغاء تسلسل json واكتشفت بالطريقة الصعبة.استغرق الأمر أسبوعًا حتى يتمكن أحد الزملاء من تأكيد أن قيود الثقة المتوسطة هي السبب.انتهى بي الأمر بتبديل شركات الاستضافة نتيجة لذلك.

في حالة الثقة المتوسطة، على الأقل في مضيفي، لا تتوفر مكالمات P/INVOKE، أي باستخدام [DLLImport] للاتصال بمكون COM لن ينجح.

-إيدود

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