64-разрядная версия IIS 6.0: SysInternals Process Explorer показывает загруженные 32-разрядные библиотеки DLL?C#

Место общения программистов C#
Ответить
Anonymous
 64-разрядная версия IIS 6.0: SysInternals Process Explorer показывает загруженные 32-разрядные библиотеки DLL?

Сообщение Anonymous »

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

У меня есть два сайта на сервере: один для производства, а другой для тестирования. В производственном есть код, который развернул сотрудник, которого уже нет с нами. Этот сайт работает. Другой сайт, который мы только что развернули; он был скомпилирован для любого процессора, и мы получаем ошибки при загрузке драйверов Oracle.

Если я просматриваю рабочий процесс IIS для производственного сайта в обозревателе процессов SysInternal , выделите рабочий процесс IIS и просмотрите загруженные библиотеки DLL в нижней панели. Я вижу некоторые странные данные.

Информация о рабочем процессе:

Код: Выделить всё

Process   Version        User Name                     PID   Image Type
w3wp.exe  6.0.3790.3959  NT AUTHORITY\NETWORK SERVICE  3320  64-bit
Но в списке загружаемых DLL некоторые указаны как 64-битные образы, а некоторые — как 32-битные? Невозможно (AFAIK) загрузить 32-битные библиотеки DLL в 64-битное пространство процесса, поэтому, возможно, я не понимаю отчет, который вижу.

Подмножество информации об дескрипторе DLL:

Код: Выделить всё

Name                Image Type   Description                          Company Name            Version
aspnet_filter.dll   64-bit       Microsoft ASP.NET ISAPI Filter DLL   Microsoft Corporation   4.0.30319.1
admwprox.dll        64-bit       IIS Admin Com API Proxy dll          Microsoft Corporation   6.0.3790.3959
adsldp.dll          64-bit       ADs LDAP Provider DLL                Microsoft Corporation   5.2.3790.3959
adsldpc.dll         64-bit       ADs LDAP Provider C DLL              Microsoft Corporation   5.2.3790.3959
advapi32.dll        64-bit       Advanced Windows 32 Base API         Microsoft Corporation   5.2.3790.4555
aspnet_filter.dll   64-bit       Microsoft ASP.NET ISAPI Filter DLL   Microsoft Corporation   4.0.30319.1
aspnet_isapi.dll    64-bit       Microsoft ASP.NET ISAPI Shim DLL     Microsoft Corporation   2.0.50727.3053
comctl32.dll        64-bit       Common Controls Library              Microsoft Corporation   5.82.3790.4770
comctl32.dll        64-bit       User Experience Controls Library     Microsoft Corporation   6.0.3790.4770
comres.dll          64-bit       COM+ Resources                       Microsoft Corporation   2001.12.4720.3959

(Next few are our DLLs)

CSA.Database.DLL             32-bit       CSA.Database                         TE                      1.7.8221.0
CSA.Database.DLL             32-bit       CSA.Database                         TE                      1.7.8221.0
CSA.Loggers.DLL              32-bit       CSA.Loggers                          TE                      1.7.8221.0
CSA.Loggers.DLL              32-bit       CSA.Loggers                          TE                      1.7.8221.0
CSA.Network.DLL              32-bit       CSA.Network                          TE                      1.7.8221.0
CSA.Network.DLL              32-bit       CSA.Network                          TE                      1.7.8221.0
Enterprise.Data.DLL          32-bit       Enterprise.Data                      TE                      2.35.3.0
Enterprise.Data.DLL          32-bit       Enterprise.Data                      TE                      2.35.3.0
Enterprise.Diagnostics.DLL   32-bit       Enterprise.Diagnostics          TE                      2.35.3.0
Enterprise.Diagnostics.DLL   32-bit       Enterprise.Diagnostics          TE                      2.35.3.0

(More Microsoft DLLs...  some 32-bit, some 64-bit??)

FederatedLibrary.DLL   32-bit   FederatedLibrary   Microsoft   1.0.0.0
FederatedLibrary.DLL   32-bit   FederatedLibrary   Microsoft   1.0.0.0
gdi32.dll              64-bit   GDI Client DLL     Microsoft Corporation   5.2.3790.4396
gzip.dll               64-bit   GZIP Compressn DLL Microsoft Corporation   6.0.3790.1830

Microsoft.Practices.EnterpriseLibrary.Common.DLL   32-bit   Enterprise Library Shared Library   Microsoft Corporation   4.1.0.0
Microsoft.Practices.EnterpriseLibrary.Common.DLL   32-bit   Enterprise Library Shared Library   Microsoft Corporation   4.1.0.0
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.DLL   32-bit   Enterprise Library Exception Handling Application Block   Microsoft Corporation   4.1.0.0
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.DLL   32-bit   Enterprise Library Exception Handling Application Block   Microsoft Corporation   4.1.0.0
Microsoft.Practices.EnterpriseLibrary.Logging.DLL  32-bit   Enterprise Library Logging Application Block   Microsoft Corporation   4.1.0.0
Microsoft.Practices.EnterpriseLibrary.Logging.DLL  32-bit   Enterprise Library Logging Application Block   Microsoft Corporation   4.1.0.0

(And finally, the Oracle drivers that seem to be causing issue... 64-bit)

oracle.dataaccess.dll   64-bit   Oracle.DataAccess.dll   Oracle Corporation   2.112.1.0
oracle.dataaccess.dll   64-bit   Oracle.DataAccess.dll   Oracle Corporation   2.112.1.0
Я использовал corflags, чтобы проверить, были ли рабочие библиотеки DLL скомпилированы явно для 32-разрядной версии... Если я понимаю вывод, они Нет.

Код: Выделить всё

C:\SingleSignOn\bin>corflags CSA.Network.dll
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 1
ILONLY    : 1
32BIT     : 0
Signed    : 0
Первый шаг к пониманию того, почему наше только что скомпилированное развертывание не работает, — это понять, почему работает текущее. Может ли кто-нибудь объяснить мне, что я вижу?

Что мне нужно знать:
  • IIS работает как 64-битный процесс и будет ли он загружать любые библиотеки DLL процессора как 64-битные?
  • Если да, то почему эти библиотеки DLL перечислены Process Explorer в виде 32-битных изображений?
  • Может ли IIS загружать 32-битные библиотеки DLL в 64-битное пространство процесса?
  • Если IIS — 64-битный процесс, и мы загружаем веб-сайт, скомпилированный как Any CPU, будет ли он принудительно становиться 32-битным, если какая-либо из библиотек DLL, от которых он зависит, является 32-битными DLL (например, он был скомпилирован с 32-битным процессором) -битная версия драйверов Oracle?)
Заранее спасибо...

Подробнее здесь: https://stackoverflow.com/questions/782 ... lls-loaded
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»