アプリケーションレベルを超えて、allowDefinition = 'MachineToApplication'として登録されたセクションを使用する際のエラー


193

アプリケーションレベルを超えて、allowDefinition = 'MachineToApplication'として登録されたセクションを使用すると、エラーになります。

/ portal /ディレクトリのすべてのaspxページの一番上の行にこのエラーメッセージが表示されていますが、これは一般的なエラーメッセージです。私はこのエラーメッセージを終わりまでググっていて、/ portal /フォルダーをIISのアプリケーションとして構成するように指示する多くの投稿(私が持っています)と、web.configsをネストしていることを通知するもっと多くの投稿(しかし、投稿はいずれも解決策に関するガイダンスを提供していません。

私のセットアップでは、ルートディレクトリにweb.configがあり、会社のポータルを/ portal /ディレクトリに作成しようとしています。/ portal /ディレクトリには、独自の(必要な)web.configがあります。

私のweb.configの50行目は次のとおりです。

    <customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
    <anonymousIdentification enabled="true"/>
    <authentication mode="Forms"/>
    <membership defaultProvider="MyProvider">

したがって、domain.com / web.config AND domain.com/portal/web.config ...があり、domain.com / portal / default.aspxページが読み込まれません。

これに対する実際の解決策は何ですか?ルートのweb.configを/ portal /ディレクトリのweb.configとマージする方法をどういうわけか見つけますか、それともここから外れていますか?

どんな指導でも大歓迎です!


1
/ portal /がメインのWebサイトの下にある別のアプリケーションであると予想している場合(メインのWebサイトにweb.configをドロップしている場合)、仮想ディレクトリとして設定する必要があります。どのバージョンのIISを使用していますか?通常はディレクトリを右クリックし、[プロパティ]で[ディレクトリ]タブを探して、アプリケーション名の横にある[作成]ボタンをクリックします。親web.configファイルのスコープを制限するには、inheritInChildApplications = "false"属性を確認します。IISのバージョンを教えてください。
ダッシュ

こんにちはダッシュ。私はIIS7を使用しています。/portal/は、会社のドキュメントを保存したり、カレンダーを保持したりできる、会社の従業員ディレクトリにすぎません。Benniはあなたが言っていたことを少し要約したと思います-2番目のオプションでは、IISソリューションの概要を説明しました。私はこれら2つの解決策のどちらかの間で、これを理解できると確信しています。このダッシュを読んでくれて、手伝ってくれてありがとう。「作成」オプションが表示されたら、自分が進んでいることがわかります。再度、感謝します!
Jason Weber

1
パブリッシュする前にプリコンパイルするパブリッシュプロファイルを定義した後、この問題が発生しました。そのため、objフォルダーはプロジェクトを壊していたweb.configを使用します。objフォルダー内のすべてを削除した後、再び機能しました。
Rumplin

回答:


219

背景情報としてのみ。ASP.NET Webサイトの構成情報は、1つ以上のWeb.configファイルで定義されています。構成設定は階層的に適用されます。Webサーバー上のすべてのWebサイトのベースライン構成情報を詳しく説明する「グローバルな」Web.configファイルがあります。このファイルは、%WINDIR%\Microsoft.Net\Framework\version\CONFIGフォルダます。Web.configファイルをWebサイトのルートフォルダーに置くこともできます。このWeb.configファイルは、「グローバル」Web.configファイルで定義された設定を上書きするか、新しい設定を追加できます。さらに、Web.configファイルがWebサイトのサブフォルダーにあり、新しい構成設定を定義するか、階層の上位にあるWeb.configファイルで定義された構成設定を上書きする場合があります。

Web.configの特定の構成要素は、アプリケーションレベルを超えて定義することはできません。つまり、「グローバル」Web.configファイルまたはWebサイトのルートフォルダーのWeb.configファイルで定義する必要があります。<authentication>要素は、その一例です。上記のエラーメッセージは、アプリケーションレベルを超えて定義できないこれらの構成要素の1つを含むWebサイトのサブフォルダーの1つにWeb.configファイルがあることを示しています。

ソース:http : //scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

2つの可能なアプローチを正しく識別しました。

1-2番目のweb.configの内容と、セットアップで許可されるかどうか(つまり、同じ認証方法)に応じて、<authentication>グローバルに定義する必要がある設定とその他の要素を上部のweb.configに追加します。

2-web.configの内容をマージできない場合は、このリンクのアーカイブされたリンクに含まれている手順に従って、サブフォルダーをIISのWebアプリケーションに変換できるはずです。元のリンクは機能していません。(アーカイブを参照)これが役立つことを願っています。


8
はい、Benni氏は、それが非常に役立ち、問題を解決しました。この質問にお答えいただきありがとうございます。私はあなたの答えを読むだけでたくさんのことを学びました。2つのweb.configファイル(少なくとも認証部分)をマージしようと思います。それが機能しない場合は、さまざまなIIS7オプションを調べます。お時間と情報をありがとうございました、Benni!
Jason Weber

13
Web配置パッケージをビルドすると、次にビルドするときにこの問題が発生します。MyWebSiteProject / obj / Debug / ...にWeb.configのコピーがあります
Curtis Yallop

4
これを理解しようとするほぼ1日後、最終的には、問題を実際に説明する詳細な回答を言います。これをありがとう!
ポールジャービス博士2013

2
ここで最大の問題は、最初のビルドが機能したことですが、その後、最上位のweb.configで許可された設定が、現在objフォルダーにコピーされたweb.configで許可されていないために失敗しました。トリックは、トップレベルの問題のある属性を削除し、objフォルダーを削除して、正当なweb.configをサブフォルダーに入れることでした。これはVisual Studioのバグであることは明らかですが、サブレベルのweb.configでは無効なトップレベルのweb.configの属性を使用する必要がない場合の回避策は簡単です。
csells 2014

2
Visual Studio 2012および2013では、構成ファイルに[Copy to Output Directory = Always Copy]が含まれている場合、発行プロセスで構成ファイルのコピーがbinフォルダーとobjフォルダーにドロップされ、この例外がトリガーされます。Tim C.によって特定されたこの発行の問題の解決策は、構成ファイルのプロパティを「コピーしない」に設定することです。
criticalfix

68

それだけの価値があるのですが、「アプリケーションレベルを超えてallowDefinition = 'MachineToApplication'として登録されたセクションを使用するとエラーになります」というエラーを受け取りました。そして、\ myWebApp \ obj \ Debugおよび\ myWebApp \ obj \ Releaseディレクトリをクリアすることで解決しました。また、デフォルトの起動ページを設定する必要もありました。しかし、その後、アプリは正常に起動しました。HTH。


24
+1 OBJフォルダの削除は一般的な修正のようです... stackoverflow.com/a/5175074/188926
Dunc

1
OBJフォルダーの内容を削除すると、これも修正されました。このエラーには他にも多くの原因が考えられます。正しい答えを見つけるのに役立つフレーズは、「公開中」でした。
ジム・ネフ

1
私がOBJフォルダを持っていたら、それを試してみます。
B.クレイシャノン

Debugフォルダーを削除するだけでは不十分だったので、デフォルトのスタートアップページを設定するのがうまくいきました(必ず両方を実行してください)。
LoJo 2018

これを試してもうまくいきませんでした。次に、公開したファイルをIIS内のアプリケーションに変換するのを忘れていることに気付きました。
eaglei22

60

RY4Nが上で述べたように、問題を引き起こすのは必ずしもプロジェクトフォルダ内のweb.configであるとは限りません。場合によっては、Debugプロファイルの下でビルドを実行すると、問題のプロジェクトの下のDebugフォルダーに残骸が残ることがわかりました。ここにweb.configファイルが含まれていることがよくあり、その後にリリースプロファイルでビルドを実行すると、上記のエラーが発生します。

ここで機能する解決策は、以前のビルドがプロジェクトディレクトリの下に作成したDebugフォルダー全体を削除することです。


1
マシューありがとうございます。私はついにそれを少し前に理解しましたが、はい、デバッグではなくリリースでコンパイルする必要がありました。時間を割いて対応していただきありがとうございます。
Jason Weber、

3
先端をありがとう!Webサイトプロジェクトのbinフォルダーとobjフォルダーを削除したところ、再構築したときに問題が解決しました。
Paul Stegler、2014

22

これは自宅のコンピューターでも発生していましたが、リリース構成でビルドビューを有効にし、リリース構成をビルドしたときのみでした。そうでなければそれは起こりませんでした。

[ビューの作成]オプションは非常に便利ですが、この「エラー」が常にポップアップしてアプリを実行できなくなるため、無効にしてしまいました。


2
感謝します…それは、他のいくつかの提案とともに、トリックを行うように思われました。お時間を割いていただきありがとうございます。
Jason Weber、

1
これは私にも起こりました。なぜだかわかりません。「MvcBuildViews」の設定があまり役に立たなくなるので、それは確かです。
ケン・スミス

MvcBuildViewsをユーザー設定にのみ設定する方法はありますか?いいね、webproject.csproj.userファイルに?
C.テワルト2014

VS 2013のUpdate 2をインストールした後、このエラーが発生し始めました。トップレベルのプロジェクトとネストされた子Webサイトがあり、どちらもIISアプリケーションとして構成されています。MvcBuildViewsをオフにすると、問題も解決しました。
グレッグエンスロー2014年

13

ただ言う

アップグレードする場合(例:2008-> 2010)プロジェクト Visual studioは、新しいソリューションに追加されたプロジェクトソリューションにバックアップを作成します(許可する場合)。古いWebconfigは、上記で指摘されたエラーが発生する場所です。 。

" アプリケーションレベルを超えて定義できないこれらの構成要素の1つよりも、Webサイトのサブフォルダーの1つにあるWeb.configファイル。 " @ benni_mac_b

修正するには:このシナリオでは、プロジェクトとソリューションからバックアップフォルダーを削除するだけです。


その情報をありがとう、ライアン....私はVS 2010しか持っていません。プロジェクトとソリューションからバックアップフォルダーを削除すると言ったときの意味がよくわかりません。しかし、私はあなたの答えをさらに調べます。繰り返しますが、時間を割いて私を助けてくれてありがとう!:私はちょうどここにフォローアップの質問投稿stackoverflow.com/questions/10414751/...
ジェイソン・ウェーバー

12

これが発生する別の理由が考えられます。

2.0でビルドされた古いWebアプリケーションがありました。4.5ソリューションに移行しました。

アプリケーションはVisual Studio内で問題なく構築およびデバッグされましたが、Webアプリケーションを公開しようとすると、このエラーが何度も発生しました。

私は最終的に、web.configファイルのビルドアクションが「コンテンツ」ではなく「埋め込みリソース」であるという問題を発見しました。また、「出力ディレクトリにコピー」が「コピーしない」ではなく「常にコピー」に設定されていました。これらの設定がいつ行われたかはわかりませんが、2.0バージョンのアプリケーションに戻ったと思います。

web.configファイルの設定を変更すると、Visual Studio 2012パブリケーションのパブリッシュアクションが問題なく動作するようになりました。


そこに他のすべての解決策を試しました。これは助けた。私のプロジェクトはVisual Studio 2010から2015に時間をかけて移行されたので、おそらく2010のデフォルト値は「常にコピー」でした
Andreas Rathmayr

私のweb.configのプロパティは、FileNameとFullPathの2つに制限されています。それ以外の場合は、ビルドアクションが何であるかを確認します。
B.クレイシャノン

11

MVCプロジェクトでも同じ問題が発生しました。公開しようとしたときにエラーが発生しました。objフォルダーは空である(または少なくともが含まれていないweb.config)必要があります。

ランニングCleanは私にとってはトリックをしませんでした。

objビルドの前にフォルダーをクリーンアップすることで問題を解決しました(プロジェクトのビルドには、とにかくそれほど時間がかかりません)。

プロジェクトをアンロードし、BeforeBuildターゲットに以下を追加しました

<Target Name="BeforeBuild">
    <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" />
    <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" />
    <Message Text="Clean obj/bin from web project" />
</Target>

お役に立てれば


7

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

VS.NETでこの問題が発生しました。いくつかの構成変換を構成しているときに、Web.configファイルのプロパティを「常にコピー」に誤って設定していたことがわかりました。通常、変換ファイルを「常にコピー」に設定しますが、web.configルートファイルは「コピーしない」のままにします。

web.configのプロパティを変更すると、ネストされたすべての変換も変更されるため、注意してください。

したがって、修正するには:

1)web.configを「コピーしない」に変更します

2)オプションで、構成変換を使用している場合は、「常にコピー」に設定します。

3)ソリューションからobjフォルダーとbinフォルダーを削除します(これらは表示されない場合があるため、ソリューションエクスプローラーでプロジェクトノードを選択し、[すべてのファイルを表示]ツールバーボタンをクリックします。

4)公開

私のために働いた。


5

このエラーは、アプリケーションの公開中にのみ発生しました。

web.config(および変換)ファイルのプロパティは、次のように設定されています。

  • Build Action - None
  • Copy to Output - Always

解決策は、設定を次のように変更することでした。

  • Build Action - Content
  • Copy to Output - Do not Copy

4

私にもこの問題があり、発行ウィザードを使用して自分のサイトをWebに発行した後に発生しました。

よく調べた後、ConnectのWebサイトでこのバグレポートを見つけました。https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level

MSの担当者は返信し、これが発行時に発生した問題である理由を説明したほか、問題を修正する一時的な回避策も含めました。


4

仮想ディレクトリを削除再度作成します。右クリックして仮想ディレクトリを「アプリケーション」に変換します


3

Web.configソリューションエクスプローラーからファイルをクリックし、[プロパティ]を右クリックして、[出力ディレクトリにコピー:コピーしない]に変更します。

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


1

私にとっての理由は、objフォルダーがwebサイトフォルダーの下にあり、複数のweb.configが異なる構成を構築した後に表示されたためです。vs2012で問題を解決するには、objフォルダーをWebサイトから移動します。これを行うために、手動で(メモ帳で)$(SolutionDir)\ Obj \ $(Configuration)をWebサイトプロジェクトファイルのすべての構成に追加しました。


1

サイトを公開するときにも同じ問題が発生していました。サイトを構築しても問題は発生しませんが、公開中に次のようなひどいエラーが発生します。

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

私はこの記事で述べられているすべてを手段なしで試しました、私のために働いたのは、私が使用しているものとまったく同じで新しいパブリッシュプロファイルを作成することでした、そしてそれはうまくいき、エラーを出さないでください新しいプロファイルを使用しますが、古いプロファイルを使用します。違いはわかりませんが、少なくともMVCプロジェクトを公開できます。

これが誰かに役立つことを願っています!!


1

これには別の理由があります-Webアプリ全体を独自のサブフォルダーの1つにコピーすると、このエラーが発生します。あるマシンから別のマシンにコピーするときに、私はなんとかこれを古いサイトに実行しました-約2年のギャップの後にサイトを確認するように求められ、エラーが発生しました。私は複数の設定ファイルを持っていなかったので、かなり理解しました。


1

私はこの問題を抱えており、古いアセンブリなどのソリューションをクリーニングすることで解決しました。

対vs:ビルド>ソリューションのクリーン

その後、再構築します。


1

Windowsのスタート->サイトを開く-> IIS->サイトを右クリック-> Webサイトの管理->詳細設定->物理パスを参照->現在選択されているサブフォルダを選択してみてください。

ロジックは、サブフォルダー内のWeb構成ファイルが変更を加えようとしているためであり、これは許可されていません。選択したフォルダーでなければなりません:http : //scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx


1

また、WebサイトにサブWebサイトを展開しようとすると、このエラーが発生します。

解決策は次のとおりです。

  1. サブweb.configのprofilemembershiproleManagersessionStateなどのいくつかの構成タブを削除する必要があります
  2. 次のように認証を「なし」に変更します。 <authentication mode="None" />
  3. IISに移動し、サブフォルダーを右クリックします- >アプリケーションの追加。
  4. この問題を解決するには、IISをリセットしてください。

他の問題が発生した場合は、遠慮なくpingを送信してください。多分私がお手伝いします。


1

Visual Studio 2017のlocalhostでこのエラーを受け取り、Visual Studioを再起動するだけで問題が解決しました。

この問題は、複数のweb.configが原因で発生する場合もあることを理解しています。たとえば、サブフォルダ内の1つ。別のアプリケーションのために意図的に複数のweb.configファイルがある場合:ディレクトリが仮想ディレクトリとして表示されていないことを確認します。


0

このエラーが発生するmysite.testであるはずのlocalchost / mysite.testを介して誤ってローカルサイトにアクセスするという罠に陥らないようにしてください。

この場合、localhost / dir_nameなどのサイトにアクセスすると、web.confがルートレベルを下回るため、このエラーが発生します。


0

私はアプリを移行していて、アプリには複数のアプリ(複数のweb.configs)が含まれていました。IISに移動し、サブフォルダーを右クリックして[アプリケーションに変換]を実行すると、アプリが機能しました。


0

私はこのエラーを他の誰とも違うように受け取りました:

私は、vs2010からWebデプロイメントプロジェクトを使用して、vs2012と新しいWebパブリッシュプロファイルに移行しました。

ファイルシステムに公開するためにvs2012で新しいWeb公開プロジェクトを作成しました(別のインストーラービルダーがあり、これは商用アプリです)、IISにリンクされている既存のWebプロジェクト内にあるフォルダーに公開していました。

IISではなくファイルシステムに発行していたため、発行中にエラーが発生し、最初は戸惑いました。

解決策は、発行先フォルダーをWebプロジェクトの外部に変更することでした。


0

それは問題ありlocalhostませんでしたが、サーバーにリリースを公開したときに、いくつかのページで同じエラーが発生しました。次に、ソリューションをクリーンアップし、再構築して公開しました。問題は修正されました。


0

時には、単純な答えが最善です。プロジェクトに2つのweb.configファイルがありました。メインレベルの1つは、セッションタイムアウトに対処するために変更を加える必要があった場所です(これにより、この問題が発生しました)。Razorビューディレクトリに個別の構成ファイルがあり、Razorとそのビューの設定がありました。私はそこにセクションを追加していました(アプリケーションレベルではありません!)。2つの個別のweb.configファイルがあることに気付かずに、明白なものを探す以外はすべて試しました。


0

私の間違いは、誤ってweb.configをWebサーバー上の別のフォルダー内にコピーして貼り付けることでした


0

公開したプロジェクトをIIS内のアプリケーションに変換するのを忘れたときに、このエラーが発生しました。

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