0

看起来我对一个简单的问题感到震惊。我正在托管一个预编译的网站。它可以在我的本地盒子中编译并正常工作。但是当我在 IIS 中托管时,它会因以下错误而失败。

无法加载类型“MyHero.Home1”。

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

我可以在 Bin 中找到 MyHero.dll。我也在对象浏览器中打开了它,可以看到有一个 Home1 类型。MyHero.Home1 类型存在并且是公共的。所以它肯定是预编译的。不确定我在这里缺少什么。这是我第一次使用 VB.NET。

这就是代码背后的样子

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

部分类的其他部分是设计器生成的。并且在 Home.aspx.designer.vb

Partial Public Class Home1

我没有上传代码作为它的预编译站点。

我在 Windows server 2003 上使用 IIS。任何指针都会非常有帮助。

我可以看到 Home1。列在对象资源管理器中的 MyHero 命名空间下。只是为了确保我在 Home1 类周围添加了命名空间 Hero,尝试但结果相同。还尝试从 aspx 页面中删除命名空间前缀继承没有帮助。

windows server 2003 上的 IIS 是否存在任何已知问题。.NET 框架和 IIS 的安装顺序是否会影响这一点?我在新安装的盒子上托管这个。它在我的开发框中运行良好。

感谢dariom,我已经安装了融合日志查看器。这是绑定日志,似乎没有给出太多线索。可以 ?

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 回答 4

4

伙计们,我能够解决这个问题。这是一个 Windows 7 安全问题。我正在将代码从 Windows 7 笔记本电脑上传到服务器。dll 似乎带有一些隐藏的安全权限。

我已经使用 winrar 归档了 dll 并将其提取到服务器上。只是为了确保删除所有安全权限。dll 现在加载正常,只是它困扰了我们将近一个星期。

感谢你的帮助。

于 2010-08-25T16:09:34.193 回答
0

将 Home1 类放在 MyHero 命名空间中就可以了。国际海事组织。

于 2010-07-16T12:00:29.373 回答
0

当你说你的应用程序是预编译的......你是怎么做到的?我很惊讶在您的页面指令(在预编译页面中)中看到 CodeBehind="" 属性。确保您的虚拟目录中没有文件“Home.aspx.vb”。您只需要 Inherits=""。您还可以将程序集的名称添加到继承值中,例如:Inherits="MyHero.Home1, MyHero"

于 2010-07-16T12:58:34.740 回答
0

您的方案听起来应该可以正常工作 - 我看不出您的 ASPX 和代码隐藏文件有任何问题。

如果您有权访问运行应用程序的 IIS 服务器,则可以尝试使用 Fusion Log Viewer 来确定 .NET 运行时尝试加载MyHero程序集时发生的情况。此 MSDN 杂志文章包含有关启用活页夹日志记录和使用 Fusion Log Viewer 的详细信息。希望这可以揭示为什么找不到您的程序集。

于 2010-07-16T13:14:54.413 回答