0

私は単純な問題にぶつかったようです。コンパイル済みの Web サイトをホストしています。私のローカルボックスでコンパイルして正常に動作します。しかし、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 サーバー 2003 で IIS を使用しています。

Home1 が表示されます。オブジェクト エクスプローラーの MyHero Namespace の下に表示されます。クラスHome1の周りに名前空間Heroを追加したことを確認するために、試してみましたが同じ結果になりました。また、aspxページの継承から名前空間プレフィックスを削除しようとしましたが、役に立ちませんでした。

Windows Server 2003 上の IIS に関する既知の問題はありますか? .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 に答える 4

4

皆さん、私はこの問題を解決できます。これは Windows 7 のセキュリティの問題でした。Windows 7 ラップトップからサーバーにコードをアップロードしていました。dlls には、いくつかの隠されたセキュリティ権限が含まれているようです。

winrar を使用して dll をアーカイブし、サーバーに展開しました。すべてのセキュリティ権限が確実に削除されるようにするためです。dll は現在正常にロードされていますが、ほぼ 1 週間悩まされていました。

ご助力いただきありがとうございます。

于 2010-08-25T16:09:34.193 に答える
0

アプリがプリコンパイルされていると言うとき...どうやってそうしているのでしょうか? あなたのページ ディレクティブ (プリコンパイル済みページ) に CodeBehind="" 属性があることに驚きました。仮想ディレクトリに「Home.aspx.vb」というファイルがないことを確認してください。必要なのは Inherits="" だけです。Inherits="MyHero.Home1, MyHero" のように、アセンブリの名前を継承値に追加することもできます。

于 2010-07-16T12:58:34.740 に答える
0

Home1 クラスを MyHero 名前空間に配置するとうまくいきます。IMO。

于 2010-07-16T12:00:29.373 に答える
0

あなたのシナリオは正しく動作するはずです.ASPX とコード ビハインド ファイルに問題はありません.

MyHeroアプリケーションを実行している IIS サーバーにアクセスできる場合は、Fusion Log Viewer を使用して、.NET ランタイムがアセンブリを読み込もうとしているときに何が起こっているかを判断できます。この MSDN Magazine の記事には、バインダー ログの有効化と Fusion Log Viewer の使用に関する詳細が含まれています。これにより、アセンブリが見つからない理由が明らかになることを願っています。

于 2010-07-16T13:14:54.413 に答える