エラー:allowDefinition = 'MachineToApplication'がアプリケーションレベルを超えています


193

ASP.Netでオンラインプロジェクトをダウンロードしました。アプリケーションの実行中にエラーが発生する

アプリケーションレベルを超えて、allowDefinition = 'MachineToApplication'として登録されたセクションを使用すると、エラーになります。このエラーは、仮想ディレクトリがIISでアプリケーションとして構成されていないことが原因である可能性があります。

これを機能させるには、web.configまたは他の場所でどのような変更を行う必要がありますか?


53
ウェブ上で見つかった答えはどれもうまくいきませんでした。私の問題は、すべての隠しファイル/フォルダーを表示し、フォルダーを削除することで解決しましたobj
マフィンマン

6
この問題はまだVS2012に現れます。マイクロソフトとバグレポートを開きました。問題が発生して誰もがバグ報告upvoteくださいconnect.microsoft.com/VisualStudio/feedback/details/779737/...
エリック・J.

4
objフォルダーを削除すると、この問題も解決されました。ありがとう@ニック!(復活してごめんなさい)
ジョーダンウェインクラブクラブ2013


私の場合、サブフォルダ内の余分なweb.configがこの問題の原因です。その余分なweb.configを削除するとエラーが発生し
ません

回答:


96

私はこの「喜び」に出会ったばかりです。リリースモードでWebアプリケーションを公開した直後に表示されるようです。

私が見つけた問題を一貫して回避する唯一の方法は、このチェックリストに従うことです。

  1. ソリューションがリリースモードで構成されている間、ソリューションをクリーンにします。
  2. ソリューションがデバッグモードで構成されている間、ソリューションをクリーンにします。
  3. ソリューションがデバッグモードで構成されている間にビルドします。

18
私にとってもうまくいった答えのみ。この後、私は他の多くのエラーを待っていましたが、それらは無関係でした。に設定MvcBuildViewsしてここに到着しましたtrue
ベンジャミン

+1 BTW:これがうまくいった理由は、最新のビルドがDebugだったからだと思います。私はソリューションを開き、バグ修正を行い、R リリースモードでビルドしようとしました。リリースでのクリーニングは機能しませんでしたが、デバッグでのクリーニングは機能しました。(おそらく、2つの組み合わせが必要でした。つまり、DebugReleaseかにかかわらず、dllへの古い参照をすべてクリアします)。
Scotty.NET 2013

4
私はきれいにしてから、*プロジェクトのプロパティ-> Web->仮想ディレクトリの作成に移動し、問題が解決しました
gldraphael

私に必要なのは、デバッグモードでのクリーンとリビルドだけです。リリースとデバッグを切り替える必要はありません。しかし、はい、CLEANは非常に重要です。それが問題の核心です。
markaaronky 2016

1
私の場合、これまで見たことがないクリーンは利用できません。これは、元同僚から受け継いだ非常に古いVB.NETアプリケーションです。
tnk479

82

この投稿に遭遇しただけで、それは私に起こっていました。
ただ、Cleanプロジェクトとエラーが表示されなくなります。(VS2010のバグである必要があります)


Visual Studioでこれをエラーとして受け取った場合のこのソリューション。
ギデオン

22
クリーンでobjフォルダがクリアされない場合があります。これも時々削除する必要があります。
jaypeagi 2013年

1
Cleanまたはobjの削除は機能しませんでした。ジョニー・ライリーの解決策は私にとってうまくいきました。
ベンジャミン

これを取り除くには、デバッグモードとリリースモードの両方でクリーンに実行する必要がありました。デバッグのためだけに実行しても問題は解決しないようです。
JuhaPalomäki2013

同じ問題がVS2013SP1にまだ存在しています。単純なクリーンアップで、再度デプロイできます。
Brian Knoblauch 14

25

私は自分のウェブサイトの2番目のバージョンを構築するときにこの問題を抱えていました。はじめて作った時は起こらなかった。

binとobjフォルダーを削除し、Clean Solutionを実行して、今度は問題なく再度ビルドしました。


2
これは、VS Express 2012 for Webで私のために機能した唯一のソリューションです。また、ソリューション構成を作成し、.csprojソースのPropertyGroupにtrueに設定されたMvcBuildViewsを追加した後にのみ、このエラーが発生し始めました。
ジェレミークック

20

なし。IIS内でWebアプリケーションとしてWebサイトを配置したディレクトリを設定する必要があります


1
技術的にはそれは「この作業を行う他の場所」の変更ですが;)
Zhaph-Ben Duguid

2
これがWebアプリのエラーとして発生した場合の解決策です!= P
ギデオン

私はすでにアプリケーションとしてセットアップされていました。ジョニー・ライリーの解決策は私の場合うまくいきました。
ベンジャミン

私はただテンプレートWebformsアプリを動作させようとしているところです。localhostでは問題ありませんが、LAN上のサーバーでは問題ありません。このソリューションは私にとってうまくいきました:VS2015 CE、私のLAN上のWindows Server 2008。このMSページを使用して、IISで何をすべきかを説明しました:support.microsoft.com/en-gb/kb/917413。テンプレートコードに変更はありません。
ティム

16

このエラーは、プロジェクトをWebサイトとして開こうとしたときに発生します。Webサイトとプロジェクトのどちらを作成したかを判断する最も簡単な方法は、ソリューションフォルダー(つまり、コードを保存した場所)をチェックし、ルートディレクトリに* .slnファイルがあるかどうかを確認することです。 veプロジェクトを作成しました。

追加するために、Visual Studioメニューから[ファイル]、[ウェブサイトを開く]を選択して以前作成したプロジェクトを開こうとしたときに、このエラーが発生しました。代わりに。私は気がついたらすぐに直面しました:)


これも私の問題でした
mgrenier 2014

13

Visual Studio 2013ではしばらくこれに苦労しましたが、「仮想ディレクトリがIISでアプリケーションとして構成されていない」という例外の説明に従うだけで、 簡単に解決できます

私の場合、私はそう中にWebService植えましIIS website

  1. IISマネージャーでWebサイトを開いた
  2. WCFフォルダを右クリックしました
  3. クリックした Convert to Application
  4. そして次に提出 Ok

WCFが復活しました。


1
アプリケーションをデフォルトのWebサイトに移動したときに、この問題が発生していました。ポイント3は私の問題を解決するためのトリックを行いました。
bikram s。

これは、新しいWebサーバーに移動したときにうまくいきました。「アプリケーションに変換」を実行した後、フォルダーシンボルが変更され、ASP.NET MVC WebアプリケーションがそのWebサーバーで動作し始めました。
グレッグバース

11

エラーは、使用しているコードが仮想ディレクトリがIISで設定されることを期待していることを示唆しています。

ドキュメントを参照して、必要な仮想ディレクトリを追加します。web.config(ルートディレクトリではなく)が含まれているディレクトリである必要があります。


8
下のディレクトリにある2番目のweb.configを削除すると、問題が解決しました。
ルーカスB

10
私の男の1人がトランクフォルダではなく自分の<authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>中に彼Web.configを入れてViewsいたため、この問題が発生しました。
Serj Sagan 2013

10

ビューのビルドが有効なMVCプロジェクトがある場合、解決策の1つはビルド前にobjフォルダーを削除することです。プロジェクトファイルに追加:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

これが記事です:ビルドやデプロイの前にbinやobjフォルダーを削除する方法


8

最近のweb.configの変更が間違ったweb.configファイルにある可能性があります。

<machineKey...>プロパティが追加されたビュー/ web.configファイル。クリーンアップと再構築の数に関係なく、エラーは残りました。修正は、プロパティをルート/web.configに移動することでした


親Web.configを/ Viewsフォルダーに誤ってコピーしました。そこにViewsフォルダーの元のはるかに小さいバージョンを配置すると、サイトは再び機能します。
Grandizer、2016年

6

このエラーが発生した場合

アプリケーションレベルを超えて、allowDefinition = 'MachineToApplication'として登録されたセクションを使用すると、エラーになります。このエラーは、仮想ディレクトリがIISでアプリケーションとして構成されていないことが原因である可能性があります

解決策
私はVS 2012で同じ問題がありました。

  1. 現在のプロジェクトをアンロードします
  2. .csprojを編集する
  3. これを見つける <MvcBuildViews>false</MvcBuildViews>
  4. falseの代わりに値をtrueに変更します
  5. プロジェクトを再度ロードすると、このエラーは発生しなくなります

ある場合、1つの解決策は、コンパイラーによって生成されたプロジェクトのobjフォルダーの内容を削除することです。


18
これは、設定、奇妙だMvcBuildViewstrue、私は最初の場所でのエラーを得た方法です。
ベンジャミン

MvcBuildViewsをtrueに変更した後も、エラーメッセージが表示されるようになりました。値をfalseに戻すことで、エラーメッセージを取り除きました。
JuhaPalomäki2013

3
私はリリースモードとデバッグモードの両方で「クリーンソリューション」を実行しましたが、ビルドも動作しています<MvcBuildViews>true</MvcBuildViews>
JuhaPalomäkiJul

@JuhaPalomäki超甘い!ありがとう。
Haroon、2013年

@visar_uruqiとは正反対の状況でした。私の.csprojファイルでは、オプションMvcBuildViewsをtrueに設定し、falseに設定するとエラーが省略されていました(図には示されていません)。
Bronek 2013

5

私の場合、プロジェクトをサブディレクトリに公開した後にのみ問題が発生しました。私は知識が不足しているため、web_publishサブディレクトリをディレクトリ内に配置しましたweb_project

には、プロジェクトに含まれているものweb_publishと同じも含まれていることは明らかですWeb.config。ただし、は、ネストされたサブディレクトリでを検索するときに回避する必要があることをweb_project認識していません。このようにして、sが複製され、エラーが表示されました。web_publishWeb.configWeb.config

解決策は私をweb_publishどこかに置くことでした。


5

私の場合、そこにはウェブサイト全体の別のコピーを含む「バックアップ」フォルダがありました。これは別のものを意味しweb.configていたため、ビルドはこのエラーで失敗しました。「バックアップ」フォルダーを削除し、デバッグビルドとリリースビルドでクリーンソリューションを実行すると、エラーが消えました。


私も同様の状況で、誰かがディスクのWebサイトルート内に「発行済み」サブフォルダーを作成し(これは古いWebプロジェクトであり、ソリューションファイルがないプロジェクトの1つです)、これにWeb.configが含まれていました。このエラーは、Visual Studioがビルドしようとしたときに発生しました。もちろん、「obj」フォルダーなどのクリーニング/削除によって、それが修正されることはありませんでした。私はこのエラーのかなりの数のインスタンスを見てきました、そしてそれはどこかで隠れているほとんど常に複製のWeb.configです...(本当に悪いエラーメッセージも!)
詳細

4

私の場合、

ソリューションには、6つのプロジェクト、1つのメインディレクトリ、および5つのサブディレクトリが含まれています。web.configを持つすべてのサブディレクトリ。

サブディレクトリ内でページを実行すると、同じエラーが発生しました。

この行をweb.configから削除しました。

<authentication mode="Windows"/>

それは私のために働いた。


どの行を削除しましたか?
Mark Berry

線はありましたが、インデントの問題があるため表示されていません。コードを編集してコードブロックに貼り付けましたが、今すぐ表示されます。確認して、何かお手伝いできることがありましたらお知らせください。
p_champ 2013年

ありがとう、それは私にとっても失敗していたことを裏付けています。サイトは1つしかないので、プロジェクトではなくWebサイトとして開くことで回避しました。
Mark Berry

4

プロジェクトをクリーンにします/ objフォルダーを削除します(おそらく発行とデプロイを使用していますか?-そこにバグがあります)


私のために働いた唯一の解決策。<MvcBuildViews> true </ MvcBuildViews>を設定してここにアクセスします。
ポール

3

私の問題は、VS2010の新規インストールで、事前に完成した場所にWebサービスを誤って公開していたことでした。

私はPreCompiledWebというフォルダーに公開しましたが、web.configの存在がそれを台無しにしたと思われます。

私は単にフォルダを削除して、プロジェクトを更新しました。

このエラーをダブルクリックすると、エラーが発生したweb.configファイルが表示され、その原因がわかりました。


2

.Net framework 2.0のプロジェクトをダウンロードしてVS2008で開きたい場合は、バージョンの問題である可能性があります。その後、最新バージョンにアップグレードする必要があり、VSは同じルートディレクトリにフォルダーのバックアップを作成します。ここで答えを得る。


ここで ranganhの答えは、いくつかの詳細を提供します。
Mark Berry

2

ソリューションに作成されたWeb配置プロジェクトを使用してソリューションをビルドすると、このエラーが発生しました。Web配置プロジェクトのビルド先のフォルダーを削除して、エラーを解決します。このフォルダは、WDPプロパティの「プロジェクトフォルダ」属性で指定されています


2

binおよびobjフォルダーを削除します。次に、ソリューションを再構築します。


ファイルエクスプローラーの場合、これらのフォルダーを検索/削除するには、検索クエリ "obj" kind:= folderおよび "bin" kind:= folderを使用します。これでうまくいきました。
ロバートJ.グッド

2

どうやら私のソリューションには2つのweb.configファイルがありました。私はMVC4を使用していて、ビューの下に別の構成ファイルがあり、間違ったファイルに変更を加えていました。そこに修正されて私を助けました。

ただし、global.asaxファイルでデフォルトのリダイレクト/ルートをいつでも変更できます。


1

おそらく、仮想フォルダーとして構成されていないサブasp.netプロジェクトフォルダーがプロジェクトフォルダー内にあります。IISで実行するようにプロジェクトを設定します。



1

プロジェクトファイルで「true」が有効になっていると、この問題が頻繁に発生します。

  1. falseに設定

ジョニーが言うように:

  1. ソリューションがリリースモードで構成されている間、ソリューションをクリーンにします。
  2. ソリューションがデバッグモードで構成されている間、ソリューションをクリーンにします。
  3. ソリューションがデバッグモードで構成されている間にビルドします。

1

私は、Webアプリケーションになりたくないプロジェクトをフォルダにしたいと思っていました。答えは、web.configファイルを完全に削除することでした。アプリケーションのルートにのみ属します。


1

Webサイトまたはアプリケーションをサーバーで公開しているときにこの問題に直面した場合、私が使用した簡単な解決策は、ファイルを含むフォルダーをWebアプリケーションに変換することです。


4
こんにちは、Stack Overflowへようこそ。答えを広げていただけませんか?フォルダーをWebアプリケーションに変換する方法を説明できますか?これは、他の人があなたの答えをよりよく理解するのに役立ちます。
ジェシー

1
IISマネージャーの右側の[接続]ウィンドウで、作成したサイト(または既定のWebサイト)の下のディレクトリを右クリックし、[]を選択しますConvert to Application
Aske B.

1

プロジェクトをデバッグモードで公開した後、VS 2013でも同じ問題が発生します。この問題は、obj /ファイルを削除することで解決しました


1

私はウェブサイトプロジェクトを持っています。

私の場合、ソリューションファイルを別のパスに移動したため、問題が発生しました。以前の場所に復元しましたが、問題は解決しました。


1

まだ探している人のために、私の解決策はbinとobjフォルダーの両方を削除し、Visual Studioを再起動することで修正されるようでした。


1

Visual Studioを介して、外部サーバーにFTP経由でWCFサービスを公開しました。ローカルで正常に機能し、内部サーバーにパブリッシュするときは外部サーバーにはパブリッシュしませんでした。解決策は、を提供せず公開することでしSite Path(つまり、仮想ディレクトリのルートに直接公開します)。

私はすでに外部FTPクライアントを介してファイルをルートに移動しようとしたので、なぜそれが機能したのかはわかりません。たぶんそれは、FabianValの場合のように、公開プロファイルの何かだったのかもしれませ。しかし、この問題ですべての日が無駄になってしまったので、すぐに理解を急ぐ必要があるので、私はこの時点でもうテストの気分ではありません。


0

ヒント1:クリーン&再構築。

ヒント2:VSを閉じて再度開くだけです。

ヒント3:ダウンロードしたプロジェクトが別のサブフォルダー内にある可能性があります... .netファイルがあるフォルダーを開きます。

c:/ demo1 / demo /(すべてのファイル)

デモは、demo1ではなくvs ...から開く必要があります。


0

私は上記のすべての解決策を試しましたが、どれも私の問題に役立ちませんでした。(この問題には1000の解決策があると確信しています)私のシナリオでは、テストで使用したWCF Webサービスを運用環境に公開しようとしました。

ただし、本番環境ではHTTPSのみであること、つまりすべてをHTTPSにリダイレクトすることを理解できませんでした。結局のところ、HTTPSではなくHTTPを介してサービスをポイントしていたため、エラーが発生しました。このシナリオでの解決策は、アドレスプロトコルを単にHTTPではなくHTTPSに変更することでした。

それがこの問題を理解しようとしている貧しい魂の助けとなることを願っています。

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