Global.asaxの「パーサーエラーメッセージ:タイプをロードできませんでした」


203

MVC3プロジェクトで作業していて、次のエラーが表示されます。

パーサーエラーメッセージ:タイプ 'GodsCreationTaxidermy.MvcApplication'を読み込めませんでした。

ソースエラー:

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

私が受け取るエラーはGodsCreationTaxidermy.Core.MvcApplicationを読み込めませんが、このスクリーンショットでは、コアパーツがエラーに表示されていません。

エラーページのスクリーンショット

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


8
あなたのアプリケーションには本当にGodsCreationTaxidermy.Core.MvcApplicationクラスがありますか?そうでない場合は、同じものを作成してプロジェクトをコンパイルしてください。それは確かに動作します。
Shailesh 2012

4
はい、私はGodsCreationTaxidermy.Core.MvcApplication(Global.asax.cs)を持っています
PsychoCoder '27 / 07/27

使用されていると思われるGlobal.asaxファイル(スクリーンショットによる)は、表示されているものとは異なります。
Darin Dimitrov

Inherits文字列がアプリケーション内のクラスへのパス(名前空間+パス名)と同じであるかどうかを確認します。つまり、両方ともGodsCreationTaxidermy.Core.MvcApplicationです
リンカーro

これはDarinの問題の1つです。私が何をしても、コア部分は常に除外されます
PsychoCoder '27 / 07/27

回答:


175

ローカルWebサーバーは、実際に作業しているコードとは異なるコードを実行しています。デバッグが停止していることを確認し、ローカルWebサーバーを停止し、Peterの提案に従ってクリーンアップして再構築し、global.asaxとglobal.asax.csを再確認して、再試行してください。

これが機能せず、ローカルIISを使用している場合は、IISマネージャーでサイトを削除し、手動で再作成してください。


4
確かに非常に奇妙なエラー。サーバー上のIISに展開し、これを取得しました。クリーンアップと再コンパイルもうまくいきました。
Piotr Kula

2
クリーン/再構築+仮想ディレクトリを再作成し、それが機能しました。
fantastik78 14

4
2つのVisual Studioインスタンスで同じプロジェクトを開いているときに問題が発生しました。したがって、IIS Expressの2つのインスタンスが実行されていました。私はそれを閉じる必要があり、それからそれは解決されました。
lvmeijer

4
プロジェクトのbin / objフォルダーを削除してみることもできます。
arni 2015

1
私はこれらの指示に従い、いくつかの追加のクリーンアップ/再構築を投入し、.asaxファイルの空白を変更し、モニターを再フォーマットし、パンのパイプを伴う危険なジグを実行しました。
MrBoJangles 2016年

206

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

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


27
それが原因であるクレジット。私の問題を修正しました。私のアプリケーションはbin \ Debugを使用するように設定されており、binに変更すると解決しました。どうもありがとう。
ジョーイボブ

ASP.NETプロジェクトがデフォルトの出力パスbin / $(Configuration)/を使用しないことを知るのは興味深いことでした。答えてくれてありがとう!
Jaanus Varus

2
@JamesPusateri:注意してください。起動するたびに、/ binにあるものが使用されます。おそらく、これを変更した後に作成したこの1つのビルドの結果です。
Vincent de Lagabbe 2017年

1
うわー、2018年にIISはまだこのように動作しています。悪い、マイクロソフトにとって非常に悪い。ありがとう!
ロドリゴ

1
ほぼ7年間何も変更されていませんが、アドバイスは依然として役に立ちます
ユーリーヴィクロフ

33

global.asaxファイルを変更して(どこかにスペースを追加するだけです)、再実行してください。これにより、組み込みのWebサーバーがglobal.asaxファイルを強制的に更新して再コンパイルします。

また、クリーンと再構築を行います-問題を修正する必要があります


4
global.asaxを変更しても何も起こりませんでしたが、問題を修正して再構築すると問題が解決しました:)
NightShovel

私は力を使い果たしたときにこの問題を抱えていました。クリーンアップと再構築が役立ちました。ありがとう!
Gorgi Rankovski 2013年

駆除に失敗しました。ビルドに失敗しました。ビルドパスに問題はありませんでした。ただし、これでうまくいきました。ありがとう!
egandalf

回答ありがとうございますMunnings氏
ダダ

30

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

Global.asaxファイルを右クリックして[プログラムから開く] を選択し、[エンコード付きのXML(テキスト)エディター]を選択します(他のエディターも同様に機能する可能性がありますが、これを使用しています)。

次に、XMLディレクティブの「継承」セクションを編集します

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

これにより、アプリケーションクラスの実際の完全な名前と一致します。以上です。

別のオプションは、Global.asax.csからすべてのコードをコピーしてから、別のGlobal.asaxファイルを削除して作成することです(次に、コードをGlobal.asax.csにコピーして戻します)。


これも私にとってはうまくいきました。ソリューション内のすべてのプロジェクトのアセンブリの名前空間を変更しました。したがってGlobal.asax、この回答に記載されているようにファイルを編集し、プロジェクト構成設定の内容と一致させる必要がありました。
シヴァ

21

私はビジュアルスタジオを閉じて再開しましたが、うまくいきました。


4
すべてのビジュアルスタジオを閉じます
Jboy Flaga

11
まず、車から降りて、すべてのドアを閉めてから、再び車に乗ってみる必要があります。
pajics

いいえ、すべての車のドアを同時に閉じる必要があります。
BlackICE

17

BUILD-> CONFIGURATION MANAGERに移動して、プロジェクトの横にあるボックスをチェックして、プロジェクトが実際にビルドされることを確認する必要がありました。


2
私は反対票を理解していません。これは潜在的に解決策であった可能性があります。これは実際、ほとんどの人が考えるよりも関連性があります...チェックされていない場合、常に最も明白な場所であるとは限りません。特に、いくつかの構成がある場合。
アンソニー・メイソン

私はあなたの答えとあなたの推論が好きです!
UKM 2016年

1
これも私の問題で、プロジェクトが構成からどのように選択解除されたかはわかりません。
Seth

5

今日この問題があり、原因を見つけるのにしばらく時間がかかりました。

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

奇妙なことに、この問題が発生すると、VS2015はソリューションが正常に構築されたことを喜んで報告しますが、Webサイトを実行すると、誤解を招くエラーが表示され、Global.asax.csファイルが間違っていることが示唆されます。

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

ここに画像の説明を入力してください

また、次の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".

もちろん、解決策は、メインプロジェクトを右クリックし、上部のタブである[アプリケーション]を選択し、ターゲットフレームワークのバージョンをサブプロジェクトと一致するより高いバージョンに変更することです。

Visual Studio 2015を使用すると、この問題を静かに含むソリューションを完全にビルドして実行できるので困ります。それはトラブルを求めています。


2

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


2

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

私はglobal.asax.cs を削除してから、[プロジェクト]-> [新しい項目の追加]-> [Global.asax]を右クリックして新しいものを追加する必要があり、最終的にそれを修正しました。

誰かを助けるかもしれないと思っただけです。


それで問題が解決する場合は、おそらく既存のglobal.asax.csファイルの「ビルドアクション」プロパティに問題があり ます。「コンパイル」に設定する必要があります。global.asaxファイル自体のビルドアクションは「コンテンツ」に設定する必要があります。
Steven Liekens、2015

@iAteABug_And_iLiked_itとまったく同じことをしたので、問題は解決しました!
亜鉛亜鉛

2

私はこの投稿から少なくとも4つの提案を試みたことを報告しなければなりません。それらのどれもうまくいきませんでした。それでも、バックアップから回復して回復したことを報告できてうれしいです。ログファイルから最後のコード変更を更新するだけで済みました。10分未満かかりました。この投稿を読んだり、他の提案を試したりするのに3回費やした。ごめんなさい。

非常に奇妙なエラーでした。このグレムリンに遭遇した他の人に幸運を。


2

同じプロジェクトを実行しているVisual Studioの2つのインスタンスがある場合、同じ問題が発生します。したがって、私は両方のVisual Studioを閉じ、1つのインスタンスのみを開いたところ、問題なく動作しました。


2

私は古い「フォルダーベース」の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

「ビルド->構成マネージャー、そして-エヘム-プロジェクトの横にあるボックスをチェックして、実際にビルドされることを確認します。」それをWindowsエクスプローラーのプロジェクトフォルダーに移動し、オプションを押して[読み取り専用]チェックボックスをオフにすると役立ちました。


単にそれは私のために働いた。プロジェクトでビルドオプションが有効になっていません。理由はわかりませんが、この回避策が必要でした。
willyMon 2018


1

私も同じ問題に直面しました。すべての回答をフォローしたにもかかわらず、うまくいきませんでした。それから私は、「継承=変更namespace.classに」を「を継承= 完全修飾名組み立てるすなわち」継承=「namespace.class、のAssemblyName、バージョン=、文化=、なPublicKeyToken =」希望、それは助けを。


1

これは、同じソリューションからWebとWebApiを実行している場合に、VSソリューションを誤って「複数のスタートアッププロジェクト」に設定するのを忘れた場合にも発生する可能性があります。

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


鉱山はこれに似ていました:ソリューションで間違ったAPIプロジェクトを実行していました。実行していると思っていたAPIで実際にコンパイラエラーが発生しましたが、ソリューションを実行したときに、クリーン後でもVSがそれを認識しませんでした。
John

1

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

この問題はたまに私をあざ笑いにさせ、私は必然的に答えをページングすることになります。この例外が発生する原因はいくつかあると思いますが、これはかつてはうまくいきました。


他に数千の提案を数時間試してみましたが、これが私のためにやったことです。私のアプリケーションは、デバッグ構成とリリース構成の両方でVisual Studioで正常に実行されていましたが、IISに公開されるとエラーが発生しました。.vsフォルダーを削除して再デプロイすると、問題が修正されました。
Philip Stratford、

1

はい、すべての答えを読みました。ただし、あなたが私で、髪の毛の残りすべてを引き出してきた場合は、\ binフォルダーを確認してください。ほとんどのprojファイルにはいくつかの構成がXML要素の下にグループ化されている可能性があるのでPropertyGroupOutputPath値を 'bin \ Debug'から変更して '\ Debug'部分を削除し、再構築します。これにより、ファイルが\ binフォルダーに配置され、高速IISがビルドを見つけてロードできるようになりました。ローカルデバッグデプロイがターゲット環境を見つけて読み込むことができるように、これらの異なるビルドを管理する正しい方法は何なのか疑問に思います。


これが機能した唯一のものです。埋葬された遺体が非常に多い...このようなことで、他の職業を真剣に考えさせられます。
doveryai

0

この問題は、フォルダーの適切なアクセス許可を与え、IISからチェックすることで解決しました。

私は私のローカル環境でテストしているときに、すべての人に許可を与えられました。しかし、発行モードでは、ASP.Netユーザーにのみ許可を与えると思います。


0

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


0

同じエラーが発生しました...仮想ディレクトリのIIS構成を確認し、[プロパティ]-[ASP.NET]-[ASP.NETバージョン]が[プロジェクトプロパティ]-[アプリケーション]-[ターゲットフレームワーク]と同じであることを確認してください。(それにより、このエラーが修正されました。)


0

私のアプリは古いバージョンのVSでビルドされており、binフォルダーがありませんでした。私はそれを新しいバージョンにアップグレードしました、そしてそれを展開させるのに悪夢がありました。最後に、このエラーを[プロジェクト]> [プロパティ]> [アプリケーション]まで追跡しました。ターゲットフレームワークは2.0に設定されました。サーバー上でIISマネージャー/アプリケーションプールと一致するように変更すると、問題が解決しました。


0

ソリューション全体でリファクタリングせずにプロジェクトの名前空間を変更することが私の問題であることがわかりました。プロジェクトのプロパティをチェックして、名前空間が何であるかを確認し、全体的に一致するようにします。


0

私の問題は、プロジェクトに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

これを解決するために文字通り1日を費やしました。

機能した唯一のことは、.slnファイルを削除し、新しいファイルを作成し、プロジェクトを1つずつ追加し直すことでした。

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


0

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


0

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

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

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


0

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

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


0

私はこの問題に数日を費やしました。私は最終的に、この投稿からの提案の以下の組み合わせでそれを解決しました。

  1. プラットフォームターゲットをAny CPUに変更します。現在、この構成を持っていなかったため、構成マネージャーに移動して追加する必要がありました。特にx64用にコンパイルしていました。これだけではエラーは解決しませんでした。
  2. 出力パスをのbin\代わりにに変更しますbin\x64\Debug。プラットフォームターゲットを変更する前に、これをすでに何度か試しました。無効な形式のためにアセンブリの読み込みに失敗したというエラーが発生する以外は、違いはありませんでした。

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

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


0

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

  • 構成マネージャーは、dllビルドを「64」ビルドと「任意のcpu」ビルドの組み合わせとして表示します。それらすべてを同じビルドに置くと、修正されます。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.