看起来我很震惊一个简单的问题。我正在托管一个预编译的网站。它编译并在我的本地框中正常工作。但是当我在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.
答案 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的详细信息。希望这可以揭示为什么没有找到你的装配。