2

SimpleMembershipProviderSQLite を使用してサイトで認証を有効にしようとしています。で初期化してGlobal.aspxユーザーを作成できますが、ユーザーをログインできません。 を呼び出そうとすると、次のエラーが表示されますWebSecurity.Login([UserName], [Password])

Cannot implicitly convert type 'long' to 'int'. An explicit conversion exists (are you missing a cast?)

スタック トレースは次のとおりです (Login関数を呼び出した後:

CallSite.Target(Closure , CallSite , Object ) +146
System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site, T0 arg0) +661
WebMatrix.WebData.SimpleMembershipProvider.VerifyUserNameHasConfirmedAccount(IDatabase db, String username, Boolean throwException) +315
WebMatrix.WebData.SimpleMembershipProvider.ValidateUser(String username, String password) +162
WebMatrix.WebData.WebSecurity.Login(String userName, String password, Boolean persistCookie) +32

私は、SQLiteInt64が数値列 (ではないfloat) の値のみを許可することを知っています。SimpleMembershipProvider問題は、値を操作するにはどうすればInt64よいですか? スタック トレースにリストされている問題のあるルーチンのソース コードを調べたところ、関数から返される前にすべての数値が明示的にキャストされているようInt32です。ただし、System.Dynamic.UpdateDelegates.UpdateAndExecute1またはへのソースCallSite.Targetがないため、そこで何が起こっているのかわかりません。さらに、それらはおそらくプリコンパイルされています。それで、どうすればこれを機能させることができるのでしょうか?

4

1 に答える 1

0

SimpleMembership プロバイダーは、SQL Server と SQL Compact 4.0 のみをサポートします。SQLite はサポートされていません。SQLite を使用する場合は、ExtendedMembershipProvider の独自の実装を作成する必要があります。多かれ少なかれSimpleMembershipProvider.csをコピーして、データ型の競合が発生するビットを変更するだけです。

于 2013-01-29T08:15:21.923 に答える