2

ASP.NET MVC 4 Web サイトを開発しており、Microsoft ASP.NET Universal Providersを使用しています。Windows Azure にデプロイし、SQL データベースを使用する予定です。ローカルの SQL Server 2008 データベースでメンバーシップ、プロファイル、およびロールを初期化するために、ASP.NET Web サイト管理ツールを使用して新しいユーザーを作成しました。セッションを初期化するにはどうすればよいですか?

アプリケーションを実行すると、当然、「無効なオブジェクト名 dbo.Sessions」という SqlException が発生します。Windows Azure でテストした場合、これは問題ではありませんでした。dbo.Sessions は自動的に作成されました。Azure の dbo.Sessions からテーブル作成スクリプトを生成し、それをローカル SQL データベースに適用した後、ローカルで実行できます。

web.config:

<membership hashAlgorithmType="SHA1" defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" passwordFormat="Hashed" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<profile enabled="false" defaultProvider="DefaultProfileProvider">
  <providers>
    <clear />
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<roleManager enabled="false" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</roleManager>
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</sessionState>
4

2 に答える 2

2

この記事では、古い aspnet_Memembership とユニバーサル プロバイダーの違いについて詳しく説明します。

http://dotnet.dzone.com/articles/stronger-password-hashing-net

記事の要点:

まず、aspnet_regsql がなくなりました。接続文字列が設定されていて、アカウントに DBO 権限があることを確認してください (心配しないでください。このままにしておく必要はありません)。メンバーシップ プロバイダーが DB にヒットするようにする必要があります (つまり、ログオンします。アカウントがなくてもかまいません)。

それが機能するとき、それだけです。

于 2012-08-14T17:05:40.920 に答える
0

Microsoft ASP.NET ユニバーサル プロバイダーを使用して Windows Azure および SQL データベースにデプロイする場合、SQL データベースのテーブルが作成されないため、接続文字列に問題がある可能性があります。

以下の Soctt のブログには、その方法の詳細がステップバイステップで示されているので、フォローして何が欠けているかを確認してください。

System.Web.Providers の紹介 - SQL Compact および SQL Azure でのセッション、メンバーシップ、ロール、およびユーザー プロファイル用の ASP.NET ユニバーサル プロバイダー

于 2012-06-25T19:18:37.723 に答える