Простая проблема прекомпиляции asp.net в IIS - PullRequest
0 голосов
/ 16 июля 2010

Похоже, меня поразила простая проблема.Я размещаю предварительно скомпилированный сайт.Он компилируется и отлично работает в моей локальной коробке.Но когда я размещаю в IIS, происходит сбой со следующей ошибкой.

Не удается загрузить тип 'MyHero.Home1'.

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Home.aspx.vb" Inherits="MyHero.Home1" %>

Я могу найти MyHero.dll в Bin.Я также открываю это в браузере объектов и вижу, что есть тип Home1.Тип MyHero.Home1 существует и является общедоступным.Так что он предварительно скомпилирован. Не уверен, что мне здесь не хватает.Это мое первое приключение с VB.NET.

Вот так выглядит код

Partial Public Class Home1
    Inherits System.Web.UI.Page

Другая часть частичного класса создана дизайнером.и находится в Home.aspx.designer.vb

Partial Public Class Home1

Я не загружаю код, как его предварительно скомпилированный сайт.

Я использую IIS на Windows Server 2003. Любые указатели были бы очень полезны.

Я вижу, что Home1.находится в списке MyHero Namespace в проводнике объектов.Просто чтобы убедиться, что я добавил пространство имен Hero вокруг класса Home1, попробовал, но тот же результаттакже попытался удалить префикс пространства имен со страницы aspx. Наследование не помогло.

Существует ли какая-либо известная проблема с IIS на Windows Server 2003. Может ли это повлиять порядок установки .NET Framework и IIS?Я размещаю это на недавно установленной коробке.Он отлично работает в моей коробке разработки.

Благодаря dariom, я установил Fusion Log Viewer.Вот журнал привязок, он, кажется, не дает много подсказок.Неужели?

The operation failed.
Bind result: hr = 0x80131018. No description available.

Assembly manager loaded from:  c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: User = NT AUTHORITY\NETWORK SERVICE
LOG: DisplayName = MyHero
 (Partial)
LOG: Appbase = file:///C:/Inetpub/wwwroot/cmail/MyHero/
LOG: Initial PrivatePath = C:\Inetpub\wwwroot\cmail\MyHero\bin
LOG: Dynamic Base = c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\2125db8d
LOG: Cache Base = c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\2125db8d
LOG: AppName = 97d7397b
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Inetpub\wwwroot\cmail\MyHero\web.config
LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/2125db8d/97d7397b/MyHero.DLL.
LOG: Attempting download of new URL file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/2125db8d/97d7397b/MyHero/MyHero.DLL.
LOG: Attempting download of new URL file:///C:/Inetpub/wwwroot/cmail/MyHero/bin/MyHero.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Inetpub\wwwroot\cmail\MyHero\bin\MyHero.dll
LOG: Entering download cache setup phase.
ERR: Error extracting manifest import from file (hr = 0x80131018).
ERR: Setup failed with hr = 0x80131018.
ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated.

Ответы [ 4 ]

4 голосов
/ 25 августа 2010

Ребята, я могу решить эту проблему. Это была проблема безопасности Windows 7. Я загружал код с ноутбука Windows 7 на сервер. Похоже, что в DLL есть скрытые разрешения безопасности.

Я заархивировал dll с помощью winrar и распаковал его на сервере. Просто чтобы убедиться, что все разрешения безопасности удалены. Сейчас dll загружаются нормально, просто это преследовало нас почти неделю.

Спасибо за вашу помощь.

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

Когда вы говорите, что ваше приложение предварительно скомпилировано ... как вы это делаете?Я удивлен, увидев атрибут CodeBehind = "" в директиве вашей страницы (на предварительно скомпилированной странице).Убедитесь, что в вашем виртуальном каталоге нет файла «Home.aspx.vb».Все, что вам нужно, это Inherits = "".Вы также можете добавить имя сборки к значению наследования, например: Inherits = "MyHero.Home1, MyHero"

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

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

Если у вас есть доступ к серверу IIS, на котором вы запускаете приложение,вы можете попробовать использовать Fusion Log Viewer, чтобы определить, что происходит, когда среда выполнения .NET пытается загрузить вашу MyHero сборку. В этой статье MSDN Magazine содержатся сведения о включении ведения журнала подшивки и использовании Fusion Log Viewer.Надеемся, что это может раскрыть, почему ваша сборка не найдена.

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

Размещение класса Home1 в пространстве имен MyHero поможет.ИМО.

...