web-dev-qa-db-ja.com

アプリケーションレベルを超えて、allowDefinition = 'MachineToApplication'として登録されたセクション

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

Objフォルダーとbinフォルダーを削除し、authentication = "windows"の行を削除し、一部が正常に機能していると言ったので再度開こうとしました。メインフォルダー内にweb.configが1つしかないことを確認しました(Entity Framework-Folder forフォーム、モデル、DALおよびBLL)...

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

違いがある場合、これは私のweb.configです。

    <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>

これを解決するにはどうすればよいですか?

8
Kerieks

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

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

ASPに対してweb.config階層がどのように設定されているかについての良い説明は、これがどのように機能するかを視覚化するのに役立ちます: http://scottonwriting.net/sowblog/archive /2010/02/17/163375.aspx

23
Chris Noreikis

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

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

1
Gautam Beri

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

これらのディレクトリの存在は、いくつかの場合(私のように)このエラーの原因です。これらのディレクトリを削除すると、問題が発生しなくなります。

私の希望は、これによって誰かがこの問題で失った数え切れないほどの時間を節約できることです。

0
robopim