سؤال

لدي تشغيل تثبيت Windows Web 2008 X64.

نظرًا لمتطلبات التطبيق الذي لديه القدرة على استيراد ملفات Excel ، فقد اضطررت إلى تغيير تطبيق الويب لتشغيله في وضع 32 بت. مكتبات MSAccess/Excel غير متوفرة في X64.

لقد اضطررت أيضًا إلى توضيح التطبيق لتشغيله في الثقة = كامل. سابقا كان تحت المستوى = متوسط.

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

هل من الممكن تعيين مجلد/صفحة معينة لاستخدام 32 بت في التطبيق ، والباقي كـ X64. لا أصدق أنك تستطيع. ونفس الشيء لمستوى الثقة. هل تطبيق مستوى الثقة محدد أم يمكنني إرساله في مجلد متداخل؟

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

المحلول

كما يشير Foxfire بشكل صحيح, ، لا يمكنك مزج كود 32 بت و 64 بت في نفس العملية.

سيتطلب أي تطبيق ASP.NET الذي يحتاج إلى التفاعل مع المكتب مستويات مرتفعة من الثقة.

هناك طريقة للتغلب على هذا باستخدام تقنية تعرف باسم "sandboxing".

ما تفعله هو كتابة مجموعة غلاف تقوم فقط بالعمل الذي تحتاجه مع Excel. ضع علامة على التجمع مع [assembly: AllowPartiallyTrustedCallers] اعمة ، وقم بتوقيعها ثم نشرها في GAC.

يجب أن تعزى أي فصول في هذه التجمعات المطلوبة للتحدث إلى مكونات المكتب interop [PermissionSet(SecurityAction.Assert, Unrestricted=true)] أو أي طلب مطلوب.

سيتيح لك ذلك خفض مستوى الثقة على الخادم الخاص بك ولكن لا يزال يستخدم مكونات المكتب.

يعتمد هذا على افتراض أن لديك وصول إداري إلى الخادم لتتمكن من إسقاط مجموعة صندوق الرمل "الموثوق" في GAC.

نصائح أخرى

ضمن نفس العملية ، لا يمكنك أبدًا الحصول على 32 بت و 64 بت. ربما يمكنك كتابة تطبيق ثانٍ يقوم بأشياء Excel لك ومن ثم تجميعها إلى 32 بت تنفيذ. يمكنك بعد ذلك الاتصال (تنفيذ الملف ببعض المعلمات) القابلة للتنفيذ من تطبيق الويب الخاص بك (سيظل يتطلب الثقة الكاملة ، ولكن يمكن تشغيل 64 بت بعد ذلك).

تحرير: لا تحتاج إلى ثقة كاملة. يمكنك أيضًا إنشاء مستوى مخصص. ولكن النقطة المهمة هي أنه لن يتم تشغيله في ويب Trustlevel القياسي.

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