web-dev-qa-db-ja.com

Global.asaxで "パーサーエラーメッセージ:タイプを読み込めませんでした"

MVC3プロジェクトに取り組んでいると、次のようなエラーメッセージが表示されます。

パーサーエラーメッセージ:タイプ 'GodsCreationTaxidermy.MvcApplication'をロードできませんでした。

ソースエラー:

1行目:<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

私が得るエラーはGodsCreationTaxidermy.Core.MvcApplicationをロードすることができませんが、このスクリーンショットでコア部分はエラーで表示されていません:

Error Page Screenshot

誰かがこのエラーに対して何かアイデアや解決策を持っていますか?

187
PsychoCoder

あなたのローカルウェブサーバーはあなたが実際に働いているものとは異なるコードを実行しています。デバッグを停止し、ローカルWebサーバーを停止し、Peterが提案したとおりにクリーンアップして再構築し、global.asaxとglobal.asax.csを再確認してから、もう一度やり直してください。

これでうまくいかず、ローカルのIISを使用している場合は、IIS Managerでサイトを削除して手動で再作成してください。

158
Facio Ratio

プロジェクトの出力パス(プロジェクトプロパティ/ビルド)がbinに設定され、bin\Releaseまたはbin\Debugに設定されていないことを確認します。

何らかの理由でIIS(VS開発サーバーまたはローカルIIS)は常にbinディレクトリからライブラリにアクセスします(サブディレクトリは検索されません)。

188

Global.asaxファイルを変更して(単純にどこかにスペースを追加してください)、再実行してください。これにより、内蔵Webサーバーはglobal.asaxファイルを更新して再コンパイルする必要があります。

また、クリーンで再構築を行います - 問題を解決するはずです

32
Peter Munnings

global.asaxが生成された後に名前空間情報(プロジェクトまたはクラスレベル)を変更すると、これが起こることがあります。

Global.asaxファイルを右クリックして「プログラムから開く」を選択し、次に「エンコード付きXML(テキスト)エディタ」を選択します(他のエディタでも問題ないかもしれませんが、これを使用します)。

次に、XMLディレクティブの "Inherits"セクションを編集します。

<%@ Application Codebehind = "Global.asax.cs"Inherits = "GodsCreationTaxidermy.MvcApplication"Language = "C#"%>)

アプリケーションクラスの実際のフルネームと一致するようにします。以上です。

もう1つの方法は、Global.asax.csからすべてのコードをコピーして削除してから別のGlobal.asaxファイルを作成することです(そしてそのコードをGlobal.asax.csにコピーして戻します)。

26
Paul Easter

私はビジュアルスタジオを閉じて再び開くとうまくいった。

18
Gagan

私はBUILD - > CONFIGURATION MANAGERに行かなければなりませんでした - そして、それが実際にビルドされることを確認するために私のプロジェクトの隣のボックスをチェックしてください。

16
Ron Newcomb

私は今日この問題を抱えていました、そしてそれは原因を見つけるのにしばらく時間がかかりました。

基本的に、私のメインのVS2015プロジェクトには、より高いバージョンの.NET Frameworkを使用して構築されたサブプロジェクトが含まれていました。

奇妙なことに、あなたがこの問題を抱えているとき、VS2015は解決がうまくいったと喜んで報告するでしょうが、あなたがウェブサイトを試みて実行するとき、それは単にあなたのGlobal.asax.csファイルが間違っていることを示唆するその誤解を招くエラーを与えます。

そのため、このエラーが表示され、クリーニング/再構築で問題が解決しない場合は、プロジェクトのReferencesツリーを開き、感嘆符を確認してください。

enter image description here

また、Outputウィンドウで以下のようなメッセージを確認してください。

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

解決策は、もちろん、あなたのメインプロジェクトを右クリックし、一番上のタブ "Application"を選択し、そしてTarget Frameworkのバージョンをあなたのサブプロジェクトと一致するより高いバージョンに変更することです。

Visual Studio 2015でこの問題を静かに解決するソリューションを完全に構築して実行できるようになるのは厄介です。それはトラブルを求めています..!

4
Mike Gledhill

私はMVC5アプリケーションでこれに遭遇しました、そして私のために何も働いていませんでした。これは、SVNを実行して古いバージョンのプロジェクトに戻そうとした直後に起こりました。

Global.asax.csを削除してから、[プロジェクト] - > [新しい項目の追加] - > [Global.asax]の順にクリックして新しいものを追加しましたそれを修正しました。

それが誰かを助けるかもしれないとちょうど考えた。

同じプロジェクトを実行しているVisual Studioの2つのインスタンスがあるとき、私は同じ問題を抱えています。だから私は両方のVisual Studioを閉じて1つのインスタンスだけを開いて、それは今うまく働きます!

私は以前の 'フォルダベースの' ASP.NET Webプロジェクト(私はこれを嫌いです)に取り組んでいました - そしてこれが私の修正であることがわかりました:

App_Codeフォルダを作成します(まだ持っていない場合)。

Global.asax.vbファイルをApp_Codeフォルダーに移動します

Global.asaxのマークアップでは、(少なくともこのスタイルのプロジェクトでは、afaikの)名前空間を省略することができます。

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

... "MyApp"はGlobal.asax.vbで定義されているクラスの名前です。

2
bkwdesign

私はこの記事から少なくとも4つの提案を試みたことを報告しなければなりません。どれもうまくいきませんでした。それでも、バックアップから回復して回復したことを報告できてうれしいです。唯一のログファイルから私の最後のコード変更を更新する必要がありました。 10分もかかりませんでした。この記事を読み、他の提案を試みることをその3回使いました。ごめんなさい。

非常に奇妙なエラーでした。このグレムリンに遭遇した誰かに頑張ってください。

2
htm11h

"BUILD - > CONFIGURATION MANAGERそして - ahem - 私のプロジェクトの横にあるチェックボックスをチェックして、実際にビルドされることを確認してください。"それをWindowsのエクスプローラでプロジェクトフォルダに移動し、オプションを押して「読み取り専用」チェックボックスをオフにすることができました。

2
DiSaSteR

IISでサイトのプロパティを確認することもできます。 (IISでは、サイトを右クリックして[プロパティ]を選択します。)[物理パス]設定が、他のアプリケーションではなくアプリケーションの正しいパスを指していることを確認します。 (これでエラーは解決しました。)

1
Rob Cole

私も同じ問題に直面しました。すべての回答に従うことにもかかわらず、それはうまくいきませんでした。それから、「Inherits =namespace.class」を「Inherits =完全修飾アセンブリ名」に変更しました。すなわち、「Inherits =名前空間.class、assemblyname、Version =、Culture =、PublicKeyToken = "助けになれば幸いです。

1
Mahesh

Binフォルダを空にします。すべての依存クラスライブラリを構築し、それらをメインプロジェクトで参照して、完全なソリューションを構築します。

出典

1

同じソリューションからWebとWebApiを実行している場合に誤ってVSソリューションを "Multiple Startup Projects"に設定するのを忘れた場合も、これが発生する可能性があります。

これを確認するには、ソリューションエクスプローラーでソリューションを右クリックして[プロパティ]を選択し、[スタートアッププロジェクト]を探します。

1
Dave Black

私にとっての問題は、私が自分のプロジェクトにglobal.asax.csを含めなかったことです。そして私は.net 4.5から4.0へファイルをコピーしていたので、4.0で必要とされない行をコメントアウトしませんでした。それが含まれていなかったのでとにかく問題なくそれをコンパイルしました。しかし、私がそれを含めたとき、それは問題を引き起こす行を強調しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
0
Satbir Kira

ソリューションルートから.vsディレクトリを削除します。クリーン。再構築します。

この問題は時々私を悩ませている私を駆り立てます、そして私は必然的に答えを通してページングをします。私はこの例外を生成することができます複数の原因があると思います、これは一度私のために働く。

0
Patrick

これを取得する2つの方法:

  • 設定マネージャはdllビルドを '64'と 'any cpu'ビルドの組み合わせとして表示します。それらすべてを同じビルドに配置すると、それは修正されます。

  • 分岐を切り替えると、IISエクスプレスパスが更新されないことがあります。タスクバーの[IIS Express]を右クリックし、[すべてのアプリケーションを表示]と[正しいブランチへのパスであることを確認します]をクリックします。

0
Carra

私はこれを解決するために文字通り1日を過ごしました。

うまくいった唯一のことは、.slnファイルを削除し、新しいファイルを作成し、そしてプロジェクトを一つずつ追加することでした。

¯\ _(ツ)_ /¯ - プログラミング - ¯\ _(ツ)_ /¯

0
Stachu

私はこのようにして問題を解決しました:Global.asaxの名前空間を修正するだけです。

0
MarianNikolov

私も同じエラーを得ました...あなたの仮想ディレクトリのIIS設定をチェックして、プロパティ - ASP.NET - ASP.NETバージョンがプロジェクトプロパティ - アプリケーション - ターゲットフレームワークと同じであることを確認してください。 (これでエラーは解決しました。)

0
montearg70

私は、ソリューション全体でそれをリファクタリングすることなく、プロジェクトのネームスペースを変更することが私の問題であることに気付きました。あなたのプロジェクトのプロパティをチェックして、あなたの名前空間が何であるかを見て、それが全面的に並んでいることを確認してください。

0
Hadley

私のアプリは古いバージョンのVSでビルドされていて、binフォルダを持っていませんでした。私はそれを新しいバージョンにアップグレードし、そしてそれを展開させる悪夢を見ました。私はついにこのエラーをプロジェクト>プロパティ>アプリケーションまで追跡しました。 Target Frameworkは2.0に設定されています。 IIS Manager/App Poolと一致するようにサーバー上でそれを変更すると、問題が解決しました。

0
jeffe65

私はここで絶対にすべてを試みました、そして、何も働きませんでした。私のプロジェクトはVS 2013にありました。その後、VS 2015にアップグレードし、2015年に新しいアプリケーションをすべて作成しましたが、2013年にそのバージョンでビルドされた古いアプリケーションはすべてロード、コンパイル、ビルドなどしました。

私は2015年にソリューションをロードしましたが、解決しました。

0
Blair Holmes

この問題は、フォルダの適切な許可を与えることとIISからチェックすることによって解決されました。

私は自分の地域の環境でテストしているとき、私はみんなに許可を与えられました。しかし、公開モードでは、ASP.Netユーザーにのみ許可を与えます。

0
Ajay2707

プロジェクトを再構築することで問題を解決することができます。

0
suphero

私はまた同じエラーを得た...あなたが正しく開発したアプリケーションの名前を確認してください。名前空間とアセンブリ名が割り当てられ、アプリケーション用に作成されたフォルダの名前も物理的に変更してみてください。これらはすべて、global.asaxファイルに存在する上記の名前空間の名前と同じである必要があります。

0
Bhavik

私はこのエラーメッセージに遭遇し、最終的にエラーメッセージが誤解を招くものであることを発見しました。私の場合、IISにルーティングの問題があり、それが原因でWebサーバー上の別のサイトからのglobal.asaxが読み取られ、エラーが発生していました。

IISでは、私のサイトはhttp:* 80:webservices.localにバインドされ、MyAPIというアプリケーションが含まれていました。 WebサーバーのIPアドレスを使用してMyAPIアプリケーションを呼び出すと、恐ろしいメッセージを受け取りました。

私のアプリケーションを正常に呼び出すためには、MyAPIアプリケーションを呼び出したすべてのマシンにwebservices.localのHostファイルエントリを追加する必要がありました。正しくルーティングするには、すべてのリクエストに http://webservices.local/MyAPI/ のプレフィックスを付ける必要がありました。

0
Sheldon

私はこの問題に何日も費やした。私はついにこのポストからの提案の以下の組み合わせでそれを解決しました。

  1. プラットフォームターゲットをAny CPUに変更します。私は現在この設定を持っていませんでした、それで私は設定マネージャに行きそれを追加しなければなりませんでした。私は特にx64用にコンパイルしていました。これだけではエラーは解決しませんでした。
  2. 出力パスをbin\ではなくbin\x64\Debugに変更します。プラットフォームのターゲットを変更する前に、これを数回試したことがあります。無効なフォーマットのためにアセンブリのロードに失敗したというエラーを受け取る以外に違いはありません。

明確にするために、私はそれが機能し始める前にこれらの両方をしなければなりませんでした。私はそれらを個別に複数回試してみましたが、両方をやるまでそれを修正することはありませんでした。

これらの設定のいずれかを元の設定に戻すと、Clean Solutionを実行してbinディレクトリ内のすべてを手動で削除したにもかかわらず、同じエラーが発生します。

0
Drew Chapin

プロジェクトでロードエラーが発生しないfirstly Fix your errors and after rebuild project its working

0
Codeone

私の場合は、WebアセンブリはGACの一部でした。そのため、ビルド後にGACにインストールする必要がありました。

0
Vishnu