Как установить целевую платформу для проекта веб-сайта ASP.NET

Я продолжаю сталкиваться со всевозможными нюансами между «проектом веб-сайта» и «проектом веб-приложения» - вот последнее для меня:

Я унаследовал решение Visual Studio 2005 с несколькими проектами библиотек классов (DAL.dll, Biz.dll и т. д.), но все это "закрывает" проект веб-сайта, а не проект веб-приложения.

В то время как проект веб-приложения предоставляет раскрывающийся список Целевая платформа (любой ЦП, x86, x64), бедный проект веб-сайта не предлагает ничего подобного. Есть ли способ обеспечить работу веб-сайта как x86 при размещении на 64-разрядной машине IIS?

..Большая картина того, почему я это спрашиваю:

Веб-сайт работает на 64-битной машине (Win Server 2003) и [я только что узнал] не может загрузить 32-битный COM-объект, который, как я полагаю, был обернут вызываемой оболочкой времени выполнения. Поскольку он не может загрузить эту часть, параметр web.config настроен так, чтобы избежать ошибки загрузки во время выполнения, минуя загрузку этой 32-битной dll (но поэтому вся функциональность COM dll «теряется», когда сайт работает на 64-битной библиотеке). битовая машина).

Таким образом, я предполагаю, что веб-сайт на 64-битной машине должен работать в IIS как 64-битное приложение, и что если бы я мог вместо этого просто заставить сайт работать как 32-битный, то он мог бы загрузить COM dll и, следовательно, выполнять эту функциональность приложения.

ПРИМЕЧАНИЕ. Я проводил и до сих пор провожу исследования здесь, чтобы подготовиться к быстрому освоению, когда я получу доступ к фактической среде разработки, поэтому большая часть моего вопроса основана на объединении частей моих [ожидаемых] проблем, с которыми я скоро столкнусь. Спасибо.


person John Adams    schedule 10.12.2009    source источник


Ответы (2)


Насколько мне известно, на сервере 03 вы не можете иметь 64-битные и 32-битные пулы приложений в IIS рядом.

Вы можете заставить его работать в 32-битном режиме, но это повлияет на все пулы приложений и, следовательно, на все сайты/приложения. Похоже, это должно исправить вашу проблему с COM, но это может повлиять на любую другую работу в этом поле, так что имейте в виду. Справедливости ради следует отметить, что шансы переключения с 64-битной на 32-битную меньше, чем наоборот. Единственная общая вещь, которая приходит на ум, которую нужно запускать в 64-битном пуле приложений, - это Exchange 07. Сказав, что я разработчик, а не администратор сервера.

Если вы уверены, см. noreferrer">здесь

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

person Jammin    schedule 10.12.2009
comment
Спасибо. Я много узнал об этом предмете с тех пор, как опубликовал вопрос. - person John Adams; 22.12.2009

Похоже, что для проектов веб-сайтов нет цели x86/x64, только цель Any CPU. Поэтому вы должны контролировать разрядность своего веб-сайта, контролируя разрядность вашего пула приложений.

В Windows Server 2008 или Windows 7, если вы хотите создать 32-разрядный пул приложений, перейдите в Диспетчер IIS > [Имя сервера] > Пулы приложений > Дополнительные параметры. Установите для параметра «Включить 32-разрядные приложения» значение «Истина» для пула приложений, который вы хотите запустить как процесс x86.

Обратите внимание, что вам придется принять во внимание другие соображения WOW64, например, параметры реестра, к которым обращается ваше веб-приложение, теперь будут использовать ключ [HKLM\Software\Wow6432Node] вместо ключа [HKLM\Software].

person nekno    schedule 14.05.2010