2015-12-23 5 views
0

Если вы запускаете приложение-службу WCF прямо из коробки в режиме 64 бит с выбранным сервисом, оно отлично работает и дает мне контракты по умолчанию.Как заставить приложение службы WCF работать в режиме 32 бит?

Если я меняю приложение на x86 и строю с x86 (а не на какой-либо ЦП) - и настройте пул приложений IIS 8 для этого приложения, чтобы разрешить 32-разрядный - он терпит неудачу. Как заставить приложение WCF работать с 32-разрядным (оно должно быть 32 бит, потому что оно должно быть оболочкой для некоторых устаревших DLL). Примечание. Я не ссылался на библиотеки DLL или что-то еще - это просто прямо из окна приложения WCF по умолчанию (не библиотека WCF). помочь :-)

+0

Возможный дубликат [Как компилировать библиотеки службы WCF в 32-битном режиме?] (Https://stackoverflow.com/questions/3755033/how-do-i-compile-a-wcf- service-library-in-32-bit-mode) – ickydime

ответ

0

Хотя я не знаю, почему он не работает в вашем случае, есть два вопроса, которые необходимо учитывать при работе в 32-битном режиме на 64-разрядном сервере:

  • Установка платформы target в Visual Studio: установка этого параметра на x86 приведет к созданию целевой сборки в виде 32-разрядного приложения. Если сборка, которая загружает целевую сборку, выполняется в 64-битном процессе, она не сможет загрузить вашу сборку.
    Однако вам не нужно указывать x86, чтобы позволить сборке загружаться в 32-разрядный процесс. Если вы укажете Any CPU как Platform Target, его можно загрузить либо в 32-разрядном, либо в 64-разрядном режиме.
  • 32-разрядный процесс IIS: если ваше приложение работает как веб-приложение (работает в рабочем процессе пула приложений IIS), вы хотите, чтобы рабочий процесс (w3wp.exe) был 32-разрядным процессом , Это может быть указано в расширенных настройках пула приложений:

    enter image description here

    Хотя это говорит «Enable», это на самом деле означает «силу», что означает, что рабочий процесс приложение бассейн всегда будет запущен в качестве 32 когда этот параметр имеет значение True. Установив его в False, вы запустите 64-разрядный рабочий процесс для пула приложений.

+0

Да, извините, что все это. Я могу: создать приложение ASP.NET MVC в 32-битном режиме. Тот же процесс не работает с приложением службы WCF. –

+0

Хорошо. Это может быть длинный выстрел, но вы можете посмотреть на «applicationHost.config» машины. Убедитесь, что в тех же пулах установлено значение «Включить 32-разрядные приложения» равным True? Если это не так, вручную отредактируйте эти записи в True (вам может потребоваться перезапуск пула приложений, веб-сайта и т. Д.), – sjokkogutten