XCOPY / Опубликовать веб-сайт ASP.NET 3.5 в x86 на 64-разрядном сервере - PullRequest
2 голосов
/ 13 июля 2010

У меня есть ASP.NET "сайт", который использует 32-битную DLL.Когда я XCOPY к нашему 64-битному серверу, страница, которая использует эту 32-битную DLL, выдает исключение.Я уже установил для параметра «Включить 32-разрядные приложения» значение True для пула приложений, на котором работает сайт, но это не помогает.

Я также пытаюсь установить целевую платформу на x86, ноВ отличие от веб-приложения, веб-сайт не имеет возможности для этого.

Вот трассировка стека -

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 7/13/2010 5:01:12 PM 
Event time (UTC): 7/13/2010 9:01:12 PM 
Event ID: 9611671ef6b845f39af6b26b89af85e3 
Event sequence: 51 
Event occurrence: 4 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2/ROOT-1-129235271319338750 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Site\ 
    Machine name: WWWTEST 

Process information: 
    Process ID: 4020 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\WWWTEST AppPool 

Exception information: 
    Exception type: COMException 
    Exception message: Retrieving the COM class factory for component with CLSID {58968145-CF05-4341-995F-2EE093F6ABA3} failed due to the following error: 80040154. 

Request information: 
    Request URL: http://site/Downloads.aspx 
    Request path: /Downloads.aspx 
    User host address: 192.168.1.101
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: WWWTEST\Webtest 

Thread information: 
    Thread ID: 4 
    Thread account name: WWWTEST\Webtest 
    Is impersonating: False 
    Stack trace:    at Downloads.Button_Click(Object Sender, DataGridCommandEventArgs E) in C:\Site\Downloads.aspx.vb:line 1034
   at System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
   at System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
   at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   at System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
   at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
   at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Я выполнил онлайн-поиск исключения: «Получение фабрики классов COM для компонента с помощью CLSID {58968145-CF05-4341-995F-2EE093F6ABA3} не удалось из-за следующей ошибки: 80040154. "и включил 32-разрядный режим на IIS7, но все равно не повезло.

Любая помощь очень ценится.

** ОТВЕТ ** Мне удалось решить эту проблему с помощью пользователя Кев .Вот что я сделал -

  1. Загрузите пример для чтения свойств OLE File Support 2.1 для Microsoft Developer (KB 224351) из здесь
  2. Извлеките содержимое во временную папку, используяWinZip / 7-zip и т. Д. Не запускайте программу установки.Скопируйте файлы «Interop.DSOFile.dll» и «dsofile.dll» из извлеченного местоположения в каталог bin приложения на Сервере.
  3. Откройте командную строку с правами администратора и перейдите в каталог bin на сервере
  4. Введите "regsvr32 dsofile.dll"
  5. Убедитесь, что для пула приложений установлено значениеВключить 32-битные приложения.
  6. Перезагрузите IIS

Большое спасибо, Кев.Я действительно ценю это.

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Похоже, что COM-компонент не зарегистрирован на сервере.Вам необходимо скопировать компонент (dsofile.dll) на сервер и запустить regsvr32.exe, чтобы зарегистрировать его:

regsvr32 dsofile.dll

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

Возможно, стоит попытаться создать свой проект и изменить сборку на целевую x86 вместо любого процессора, хотя я сомневаюсь, что этопроблема.

0 голосов
/ 13 июля 2010

Возможно, вам нужно настроить пул приложений, в котором выполняется приложение, как x86.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...