2010-01-28 6 views
3

У нас есть приложение MVC, которое зависит от ряда сторонних продуктов (например, Crystal, Topaz). Устройство подписи Topaz имеет только 32-разрядные .dlls. Поэтому я предполагаю, что мне нужно создать и развернуть приложение на IIS 7 в 32-битном пуле приложений.Как создать приложение C# MVC с 32-разрядной сборкой для запуска на сервере x64 2008

Если это предположение верно, то мне нужно, чтобы построить приложение MVC с VS2008 настройки на «x86» (сейчас я использую «Любой процессор» компилятор?

Кроме того, не все ссылки сборки должны быть также 32-битными? Если да, то как мне получить 32-битные файлы MVC на x64 Server 2008?

Наконец, как мне сделать дружественные inetpub/каталоги x86 или это волшебным образом произойдет как следствие чего-то еще?

ответ

1

Если это предположение верно, то сделать мне нужно создать приложение MVC с VS2008 настройки на «x86» (сейчас я использую «Любой процессор» компилятор?

вы можете установить его на любой процессор, и он будет работать на 32 бит или 64 бит, в зависимости от параметров пула приложений и до тех пор, пока ваши другие зависимые библиотеки DLL также скомпилированы с «любым процессором»

Кроме того, сделать все ссылочные сборки также должны быть 32-битными? Если да, то как получить 32-битные файлы MVC на сервере x64 Server 2008?

При использовании неуправляемого кода (или опорные узлы) вы должны получить конкретный 32 разрядную и 64-разрядную версию, что assembly.If у вас есть 32-битные сборки и, если вы включите 32-битные приложения в вашем пуле приложений они будут работать в режиме WoW64

еще одна ссылка: http://blogs.msdn.com/gauravseth/archive/2006/03/07/545104.aspx

Если у вас есть x64 версии, они будут работать изначально, как 64 бит

устройство подписи Топаз имеет только Доступны 32-разрядные .dlls. Поэтому я предполагаю , что мне нужно создать и развернуть приложение на IIS 7 в 32-битном пуле приложений.

Как вы это подтвердили? Вы использовали Corflags.exe? Вы можете узнать больше об этом here. Независимо от вашего PE-заголовка (PE32 или PE32 +), если для вашего 32BIT установлено значение 0, вы можете запустить его в 64-битном пуле приложений. Даже если он установлен в 1 и если он не подписан, вы можете установить его на 0 (но не стоит рисковать) и запустить его на 64-битном пуле приложений

+0

Спасибо Рам. R U говорит, что даже если я скомпилировал свое приложение для x86, но на сервере был установлен Microsoft x64-bit MVCx.dll, так что моя 32-разрядная DLL-приложение с радостью найдет и использует 64-разрядные библиотеки Microsoft DLL? – Dale

+0

nope. Если приложение скомпилировано как x86, и если ссылка является либо x86, либо любым CPU, вы в порядке. Но если ссылка x64, у вас проблемы. Я рекомендую вам проверять заголовки, используя corflags.exe – ram

+0

, с другой стороны, если все ваши ссылки управляются кодом (с любым процессором)/установленным на 64 бит, вам не нужно включать «32-битное приложение» в пуле приложений. получить преимущество 64 бит сразу без каких-либо настроек – ram

1

Имеет ли значение, если ваше приложение MVC работает как 32-битное? Или у вас есть веская причина, чтобы попытаться перейти на 64-разрядный?

Если вы можете жить с 32-битным, совместите все свои сборки как x86. Когда вы настраиваете IIS на своем сервере x64 2008, обязательно обновите «Расширенные настройки» в вашем приложении - установите «Включить 32-разрядные приложения» в true.

Патрик

0

Если это предположение верно, то сделать мне нужно создать приложение MVC с VS2008 настройки на «x86» (прямо сейчас я использую «Любой процессор» компилятор?

Да, совершенно верно.

Кроме того, не все упомянутые узлы также должно быть 32-битным? Если да, то как получить 32-битные файлы MVC на сервере x64 Server 2008?

Нет необходимости, если эти сборки построены как ЛЮБОЙ ЦП, тогда инфраструктура .Net разрешит его до 32 бит, если ваша сборка составляет 32 бит.

Наконец, как мне сделать Inetpub/ каталогов x86 дружественным, или же, что волшебно произойти как следствие что-то еще?

Это просто происходит волшебно.