Вопрос по asp.net, asp.net-mvc-3 – Как запустить VS 2010 Local IIS в 32-битном режиме

2

Я ссылался на некоторые 32-битные и некоторые 64-битные DLL в моем проекте ASP.NET MVC 3.

Проекты компилируются, но я получаю ошибки во время выполнения.

Это потому, что я запускаю веб-проект как 64-битный.

Как я могу включить 32-битную версию? в моем локальном IIS (как я могу это сделать в IIS 7.5 Pro)?

Я использую .NET 4.0

Я получаю ошибку:

Retrieving the COM class factory for component with CLSID {A6775dfd2-1dfF-421C-A187-4D55F4DDFBFF} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

В чем ошибка? Это определенно как следствие 64-битного IIS, а не что-то еще? Snixtor
Посмотрите, поможет ли это вам:serverfault.com/questions/98257/… rcdmk
не помогло. любое другое предложение pelase InfoLearner
Не удалось получить фабрику класса COM для компонента из-за следующей ошибки: 80040154 Класс не зарегистрирован InfoLearner

Ваш Ответ

3   ответа
2

если вы его устанавливаете) - только 32-разрядная:

http://learn.iis.net/page.aspx/1265/iis-75-express-readme/

Цитировать:

Both 32-bit and 64-bit systems are supported, however only a 32-bit build of IIS 7.5 Express exists.

Поэтому я не могу представить, что ваши проблемы будут связаны с обычными проблемами режима 32-битного / 64-битного пула, которые могут возникнуть, если все ваши библиотеки DLL являются 32-битными.

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

Еще одна ошибкаforgetting to tick the Use IIS Express checkbox при выборе веб-сервера для отладки:

enter image description here

Если вы не отметите этот флажок, то ваш сайт будет запущен в дочернем приложении вDefaultWebSite на версии IIS7, которая поставляется с Windows.

DefaultWebSite работает вDefaultAppPool, который в 64-разрядных версиях Windows работает как 64-разрядный процесс. Так что вам нужно изменитьDefaultAppPool работать как 32-битный, если вы хотите использовать это вместо и использовать 32-битные двоичные файлы.

Это необходимо сделать с помощью оснастки MMC IIS7 или запустивappcmd.exe инструмент из командной строки.

что вы порекомендуете? это работает в приложении для x86 windows, но не в x64 asp.net InfoLearner
Но вы не говорите нам, является ли это COM-компонентом, написанным с использованием управляемого кода (C #, VB.NET и т. Д.) Или неуправляемого кода (VB6, C ++ и т. Д.). Есть много способов создать компонент COM. Это 32-битный или 64-битный компонент?
я думаю, что iv упомянул, что это был com dll, и я использовал regsvr32.exe, чтобы зарегистрировать его. это работало в консольном приложении Windows. Я ссылался в веб-проекте типа asp.net, но это не удалось. попробуйте обратиться к любому com dll, зарегистрируйте его, и вы получите ту же проблему InfoLearner
Вы должны рассказать нам намного больше об этих библиотеках DLL, как они были построены и т. Д. Пожалуйста, добавьте это к вопросу.
Хорошо. это был COM-компонент, написанный на C ++. Это 32-битный InfoLearner
4

что там работает, или это можно исключить, так как вы просто хотели знать, как работать с 32-битной версией)

http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/

Вы можете установить его на уровне сервера через: % windir% \ system32 \ inetsrv \ appcmd set config -section: applicationPools -applicationPoolDefaults.enable32BitAppOnWin64: true

Или установите свой конкретный пул приложений (более рекомендуемый imho), вы можете попробовать следующее. Извините, страница, с которой вы пришли, больше не выглядит активной, и теперь ее показывают только кэши Google.

Force IIS to create a 32-bit app pool worker process

If your application is running as a web app, meaning it is running in an IIS app pool worker process, you’ll want that worker process (w3wp.exe) to be a 32-bit process. That can be specified in the advanced settings of the app pool:

Select the app pool for your web app. Click Advanced Settings… under Edit Application Pool on the right. Change the value of Enable 32-Bit Applications under (General) to True.

Note that the word “Enable” in the setting doesn’t mean “allow” as in “allow either 32- or 64-bit applications.” It actually means “force” as in “force the worker process to run in 32-bit mode so that 32-bit applications are supported.” This means that the app pool worker process will always be launched as a 32-bit process when this setting has a value of True. Setting it to False will launch a 64-bit app pool worker process.

Note that when an app pool worker process is started, it shows up in the Image Name column on the Processes tab in Task Manager as w3wp.exe. When the Enable 32-Bit Applications setting has a value of True, it will be listed as w3wp.exe *32.

0

да будет работать в 32-битном режиме без необходимости связываться с настройками сервера IIS.

попробовал, и это не сработало InfoLearner

Похожие вопросы