ASP.NET 【型 "xxxx"を読み込めませんでした】 パーサーエラーについて

2009/11/20 11:24更新
TAGS: ASP.NET | パーサーエラー | Page | CodeFile | CodeBehind | Inherits

Visual Studio IDEで追加したWebフォーム(*.aspx)を実行しようとすると、【型 "xxxx"を読み込めませんでした】 というパーサーエラーが発生してしまい、本文はその解決策について解説します。

問題


LoginPage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="Test.LoginPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無題のページ</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    aa
    </div>
    </form>
</body>
</html>


LoginPage.aspxをデバッグで実行すると、以下のエラーメッセージがブラウザーに表示されます。
'/test' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。

パーサー エラー メッセージ: 型 'Test.LoginPage' を読み込めませんでした。

ソース エラー:


行 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="Test.LoginPage" %>
行 2:  
行 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


ソース ファイル: /pms/LoginPage.aspx    行: 1

調べたところ、
[VS.NET] Visual C# .NET を使用して .aspx ページを参照すると "型を読み込めませんでした" のエラー メッセージが表示される
というサポート文書を見つかり、書かれた原因は:

【これらのエラーは、.aspx または Global.aspx ページにコード ビハインド モジュールへの参照が含まれ、アプリケーションがビルドされていない場合に発生する可能性があります。 】

らしい。

早速、再ビルドして、実行しても同じようなエラーメッセージでした。

解決策


方法 : CodeBehind 属性を使用する ASP.NET 1.1 Web ページを ASP.NET 2.0 に移行する
に書いたとおり、
【@ Page ディレクティブの CodeBehind 属性と Inherits 属性を使用する Web ページは、.NET Framework 2.0 でも動作します。ただし、分離コード ファイルをコンパイルし、生成されたアセンブリを Bin フォルダに配置する必要があります。 】

なるほど、早速確認したところ、プロジェクトのプロパティ【ビルド】タブ→【出力パス】は [bin\Debug]となっていました。

出力パスを[bin\Debug]から[bin\]に変更し、実行をかけると正常に表示されました。

また、上の記事では、【.aspx ファイルでは、CodeBehind 属性を CodeFile 属性に置き換えます。】との記述もあるようで、

出力パスを変更せずに、
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="Test.LoginPage" %>


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginPage.aspx.cs" Inherits="Test.LoginPage" %>

に変更したところ、エラーメッセージが表示されることなく、正常に実行されました。

参考資料


方法 : CodeBehind 属性を使用する ASP.NET 1.1 Web ページを ASP.NET 2.0 に移行する「MSDN」
方法 : 他のコントロールの分離コード クラスにアクセスする ASP.NET 1.x スタンドアロン クラスを移行する「MSDN」

著者について
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


コメント