2013-04-24 9 views
8

System.Data.EntityのasseblyをWeb設定に追加した後、私はこのエラーを受け取りました: allowDefinition = 'MachineToApplication'として登録されたセクションを使用するとエラーが発生します。アプリケーションレベルを超えてこのエラーは、仮想ディレクトリがIISのアプリケーションとして構成されていないために発生します。セクションがallowDefinition = 'MachineToApplication'としてアプリケーションレベルを超えて登録されました

私はobjとbinフォルダを削除しましたが、私は行認証を削除しました= "windows"を再試行しようとしましたが、これはうまくいっていたと私は確認しました。フレームワーク - フォーム、モデル、DALおよびBLLのフォルダ)...

これには他にどんな理由がありますか?

<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
    <add name="CStringVKB" connectionString="Data Source=.;Initial Catalog=VKB;Persist Security Info=True;User ID=websiteservice;Password=websiteservice" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <compilation debug="true" optimizeCompilations="true" targetFramework="4.0" > 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    <!--<authentication mode="Windows"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication>--> 
    <membership> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
     </providers> 
    </membership> 
    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
     </providers> 
    </profile> 
    <roleManager enabled="false"> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

が、私はこれを解決するために何をすることができます:それは違いを作る場合、これは私のweb.configファイルである

....私はどこにでも検索し、それは基本的に私が見つけた上記の理由ですか?

答えて

23

基本的に、このエラーは、構成要素を持たないサブフォルダの1つにweb.configファイルがあることを意味します。これはあなたroot/web configファイルだけですか?そうでない場合は、それらも投稿してください。

また、愚かなように聞こえるが、IDEでWebサイト自体を開いていることを再確認する(誤って親フォルダを開いていない)。この同じエラーをデバッグしようとすると、それらがすべて正しいディレクトリになかったとき。ここで

は、あなたが、これがどのように動作するかを視覚化するのに役立ちますweb.configファイルの階層がASPのために設定されている方法についての良い説明です:http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

1

はどうやら私の溶液中の2つのweb.configファイルがありました。 MVC4を使用していて、ビューの下に別の設定ファイルがあり、間違ったファイルに変更を加えていました。そこに固定されて私を助けました。

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

0

この問題は、Visual StudioでWebサイトを開いても、誤ってルートフォルダの親を開いたときに発生するのが最も一般的です。たとえば、C:\ MyProjects \ Website1にWebサイトがあり、Website1フォルダがWebサイトのルートであるとします。 Visual StudioからこのWebサイトを開くと、Webサイトのルートフォルダを指定するよう求められます.Website1フォルダを選択することが必須です。誤ってMyProjectsフォルダを選択すると、Website1フォルダのWeb.configファイルがWebサイトのサブフォルダの1つになります。そのWeb.configファイルには、他のアプリケーションレベルの設定の中で要素が含まれているため、上記のエラーが表示されます。

このエラー(多くの場合)の修正は、プロジェクトを閉じてVisual Studioから再度開き、適切なフォルダを選択することです。

ハッピープログラミング!

0

Chris Noreikisの回答は実際には正しいです。しかし、重要な詳細が欠落しています。何らかの理由でプロジェクト/ソリューションを最初に作成したものとは異なるVSバージョンで開くと、VSは移行を試みます。この移行中にVSが「backup」または「backup _ {#}」という名前のフォルダを作成することがあります。の変更が保留中のを元に戻しても、これらのディレクトリは残ります。

これらのディレクトリの存在は、場合によっては(私のような)このエラーの原因です。これらのディレクトリを削除すると、問題が根絶されます。

私はこの問題で失われた無数の時間を節約することを望みたいと思います。