Запуск веб-приложения 32/64 бит - PullRequest
1 голос
/ 27 октября 2009

У меня запущена установка Windows Web 2008 x64.

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

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

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

1 голос
/ 28 октября 2009

Поскольку FoxFire правильно указывает , вы не можете смешивать 32-битный и 64-битный код в одном процессе.

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...