IIS中简单的asp.net预编译问题

时间:2010-07-16 11:56:30

标签: asp.net iis precompiled-headers precompiled

看起来我很震惊一个简单的问题。我正在托管一个预编译的网站。它编译并在我的本地框中正常工作。但是当我在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,我安装了Fusion日志查看器。这是绑定日志,它似乎没有给出太多线索。是吗?

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 个答案:

答案 0 :(得分:4)

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

我已使用winrar存档dll并将其解压缩到服务器上。只是为了确保删除所有安全权限。 dll现在装得很好,只是它困扰了我们差不多一个星期。

感谢您的帮助。

答案 1 :(得分:0)

将Home1类放在MyHero命名空间中就可以了。 IMO。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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