2009-10-26 3 views
1

У меня есть версия Windows 2008 x64.Запуск веб-приложения 32/64 бит

Из-за требования к приложению, имеющему возможность импортировать файлы Excel, мне пришлось сменить веб-приложение на запуск в 32-битном режиме. Библиотеки MSAccess/Excel недоступны в x64.

Мне также пришлось выработать приложение для работы в trust = Full. Раньше он находился под уровнем = средний.

Есть ли способ обхода проблемы. Я хочу снизить уровень доверия и не нарушать приложение до 32 бит, потому что один экран требует импорта excel (использование этого экрана также не частое)

Возможно ли установить конкретную папку/страницу для используйте 32 бит в приложении, а остальные - как x64. Я не верю, что ты можешь. И то же самое для уровня доверия. Является ли приложение уровня доверия конкретным или я могу отправить его во вложенную папку?

+1

Насколько сложны файлы Excel? Могут ли они быть преобразованы в CSV, а затем импортированы как текст? –

+0

Данные извлекаются из 3 листов. Требование превосходит, CSV является абсолютным последним вариантом. – minalg

ответ

1

Как FoxFire correctly points out, вы не можете смешивать 32-битный и 64-битный код в том же процессе.

Любое приложение ASP.NET, которому необходимо взаимодействовать с Office, потребует повышенных уровней доверия.

Существует способ обойти это с помощью техники, известной как «песочница».

Что вы делаете, это написать сборку обертки, которая выполняет только ту работу, которую требуется выполнить с помощью Excel. Отметьте сборку атрибутом [assembly: AllowPartiallyTrustedCallers], подпишите его, а затем разверните в GAC.

Любые классы в этой сборке, которые необходимы для связи с компонентами Office Interop, должны быть отнесены к [PermissionSet(SecurityAction.Assert, Unrestricted=true)] или независимо от того, что требуется.

Это позволит снизить уровень доверия на вашем сервере, но при этом использовать компоненты Office.

Это основано на допущении, что у вас есть административный доступ к серверу, чтобы можно было удалить «надежную» сборку песочницы в GAC.

3

В этом же процессе вы никогда не можете иметь смешанные 32-битные и 64-битные. Возможно, вы могли бы написать второе приложение, которое делает материал Excel для вас, а затем скомпилировать его в 32-битный исполняемый файл. Затем вы можете вызвать (выполнить файл с некоторыми параметрами) исполняемый файл из вашего веб-приложения (по-прежнему требуется полное доверие, но он может работать с 64-битным тогда).

Редактировать: вам не нужно полноценное доверие. Вы также можете создать настраиваемый уровень доверия. Но дело в том, что он не будет работать в стандартном остатке веб-доверия.

Смежные вопросы