.netコネクタを使用するMySQLデータベースを使用してIIS 7.5で実行されているASP.NETサイトがあり、メンバーシップ/ロールプロバイダーはweb.configで正しく設定されており、機能しますが、一時的にのみ機能します。
これまで(.netコネクタ6.7.4.0以前)、メンバーシップテーブルを含むサイトのバックアップを復元した後、常に問題が発生していました。ページに、メンバーシッププロバイダーの「スキーマがないか正しくない」というエラーが表示されました。 DBでテーブルをはっきりと見ることができるので、意味がありません。
これを解決するには、DBからメンバーシップテーブルを削除し、web.configでautogenerateschema = trueを設定し、ロールプロバイダーにテーブルを再度自動生成させます。これは機能します。次に、バックアップ(同じバックアップ!)から復元し、新しい空白のテーブルを既存のアカウントで上書きすると、すべてが正常に機能します。これは.netコネクタの癖であり、バックアップからDBを復元した後にのみ発生したため、それほど大騒ぎすることはありませんでした。
.netコネクタ6.9.4.0にアップグレードしたところ、同じ問題が発生しましたが、さらに悪いのは、そのWebサイトのアプリプールを再起動すると、同じ「スキーマがないか正しくない」というメッセージが表示され、上記の修正。 web.configに変更を加えるなどの操作を行うと、アプリプールサイクルがトリガーされます。つまり、サイトをダウンさせずにweb.configに変更を加えることはできません。
これはweb.configのロールプロバイダーですが、一部の詳細は省略されています。バージョン番号を手動で更新する以外は変更されません。
<roleManager defaultProvider="MySQLRoleProvider" enabled="true">
<providers>
<clear />
<add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.9.4.0, Culture=neutral, PublicKeyToken=xxxxxx" applicationName="xxxxx" connectionStringName="xxxxxx" autogenerateschema="True" />
</providers>
</roleManager>
そのエラーをトリガーして修正を適用した後、まったく同じバックアップからメンバーシップテーブルを復元することに注意してください。これは、修正の前後でテーブルが同一であることを意味します。したがって、データベースに問題はありません。内部的な問題です。 IISの状態。
私はこれを理解しました。データベース自体に格納されているスキーマバージョンを更新する必要があります。データベースに対してこのSQLを実行することにより、手動でこれを行うことができます。
UPDATE my_aspnet_schemaversion SET version = 10
10を、ダウンロードしたコネクタに適したバージョンに置き換えます。