web-dev-qa-db-ja.com

SimpleMembershipProviderが機能しない

私はVS2012で新しいインターネットプロジェクトを開始し、プロジェクトを少しだけ再構成しようとしています。SimpleMemberhsipProviderを動作させ続けることができないようです。基本的に、私がやったことは、モデルオブジェクトを他のいくつかのアイテムと共にコアプロジェクトに移動することだけです。私はNinjectを実装し、リポジトリパターンを使用してデータを取得することでエンティティを少し抽象化しようとしています。私は現在のプロジェクトで多くのことを変更したようには本当に感じていませんが、何らかの理由でアプリケーションを起動すると、次のようになります。

{「ロールマネージャ機能は有効になりませんでした。」}

フレームワークによって提供されるActionFilterは、次の場合にエラーがスローされます。

WebSecurity.InitializeDatabaseConnection( "DefaultConnection"、 "UserProfile"、 "Id"、 "UserName"、autoCreateTables:true);

と呼ばれます。

以下にスタックトレースの一部を示します。

[ProviderException:Role Manager機能が有効になっていません。]
System.Web.Security.Roles.EnsureEnabled()+9561885
System.Web.Security.Roles.get_Provider()+8
WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect、String userTableName、String userIdColumn、String userNameColumn、Boolean autoCreateTables)+104
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName、String userTableName、String userIdColumn、String userNameColumn、Boolean autoCreateTables)+100
c:\ Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Infrastructure\Filters\InitializeSimpleMembershipAttribute.cs:42のInoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor()

[InvalidOperationException:ASP.NET Simple Membershipデータベースを初期化できませんでした。詳細については、 http://go.Microsoft.com/fwlink/?LinkId=256588] を参照してください。
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor()in c:\ Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Infrastructure\Filters\InitializeSimpleMembershipAttribute.cs:46

私は次のリンクでgithubのコードをホストしています https://github.com/keroger2k/InoutBoard

20
Kyle Rogers

最初の方法

sphair's answer out(現在のスレッド)を確認してください。

二番目の方法

次のアセンブリを_web.config_に追加します。

_<system.web>
  <compilation debug="true" targetFramework="4.5">
    <assemblies>
      <add Assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add Assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </assemblies>
  </compilation>
</system.web>
_

更新

_WebMatrix.WebData_アセンブリには、Membership/Roleプロバイダーを初期化し、RoleManager(_PreApplicationStartCode.Start_)を有効にする起動メソッドが含まれています。しかし、ASP.NETはあなたのケースで実行するためにそれを見つけることができませんでした。これらの2行のコードを追加することにより、ASP.NETはこれらのアセンブリでPreApplicationStartMethodAttribute(s)を検索します。

25
Mehdi Golchin

Mehdi Golchinが示唆するようにweb.configにアセンブリを追加する代わりに、WebMatrix.DataおよびWebMatrix.WebDataのアセンブリ参照をCopyLocal = Trueに変更することもできます。

10
sphair

ホスティング会社(WinHost.com-優れたBTW)でまったく同じエラーが発生しました。

私の解決策はweb.configに追加することでした:

<appSettings>
    <add key="enableSimpleMembership" value="true" />
</appSettings>
10
Chris Patterson

他の人がこのエラーを受け取り、上記の解決策が私の場合のように機能しない場合。アセンブリマークアップを追加しようとすると、無効な子オブジェクトが表示されました。以下のようにroleManagerとメンバーシップタグを指定する必要がありました。一度実行すると、更新データベースが機能しました。

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
      <providers>
        <clear/>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
      </providers>
    </roleManager>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear/>
        <add name="SimpleMembershipProvider" 
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
      </providers>
    </membership> 
10
Xaxum
0
Fernando