私はMVC 4 EF Webプロジェクトを持っており、コードファーストのSQLサーバーデータベースを使用しています。これは、Web上のどこにでも例として表示される基本的で通常の構造に非常に厳密に従います。
私は必要なことを行う方法についてインターネットに投稿されたすべての記事を読みましたが、これまでのところ、私の状況に何の違いもありません. プロジェクトで必要に応じて「登録」新しいユーザー機能を取り出し、次のように Migrations/Configuration.cs ファイルに含めることで、ログイン ポイントとしていくつかのユーザーを作成しようとしています。
protected override void Seed (EntityContext context)
{
if (!WebSecurity.Initialized)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
if (!WebSecurity.UserExists("Owner"))
WebSecurity.CreateUserAndAccount("Owner", "password");
if (!Roles.GetRolesForUser("Owner").Contains("Administrator"))
Roles.AddUsersToRoles(new[] { "Owner" }, new[] { "Administrator" });
if (!WebSecurity.UserExists("fred"))
WebSecurity.CreateUserAndAccount("leemid", "pw");
if (!Roles.GetRolesForUser("leemid").Contains("Administrator"))
Roles.AddUsersToRoles(new[] { "leemid" }, new[] { "Administrator" });
base.Seed(context);
}
すべてがローカルでうまく機能しますが、Azure アカウントに発行すると、すべてが適切に設定されていることがわかりますが、シードされたユーザーとしてログインできないことを除いて、アプリは正しく表示されます。SQL Management Studio を使用して Azure db に接続しましたが、すべての UserProfile テーブルと webpages_ テーブルがそこにあります。アプリ固有のものはありません。ユーザーまたはロールではありません。ローカルでは、すべてが期待どおりに構築され、設定されています。
ルートの Web.config ファイルに、よく提案されるコードを追加しました。
<system.web>
<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>
サイトの公開を成功させるには確かにこれらすべてが必要でしたが、ユーザーのシードがうまくいかなかったことに不満を感じています。誰もこれをすでに解決しましたか?