.Net アプリケーションにカスタム ロール プロバイダを実装しようとしています。Asp.NET のロール プロバイダー ストアド プロシージャを使用して、ユーザーが追加したロールが既に db に存在するかどうかを確認しようとしています。
SqlConnection sqlConnection = new SqlConnection(conn);
SqlCommand sqlCommand = new SqlCommand("aspnet_Roles_RoleExists", sqlConnection);
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Add("@RoleName", SqlDbType.VarChar, 256).Value = "/";
sqlCommand.Parameters.Add("@ApplicationName", SqlDbType.VarChar, 256).Value = roleName;
sqlCommand.Parameters.Add("@ReturnValue", SqlDbType.Int,4).Direction = ParameterDirection.ReturnValue;
try
{
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
int x = (int)sqlCommand.Parameters["@ReturnValue"].Value;
if ((int)sqlCommand.Parameters["@ReturnValue"].Value == 0)
...
問題は、たとえばロールを追加して admin
、データベースからspを手動で実行するときです
DECLARE @return_value int
EXEC @return_value = [dbo].[aspnet_Roles_RoleExists]
@ApplicationName = N'/',
@RoleName = N'admin'
SELECT 'Return Value' = @return_value
admin
正しい結果が得られますが、ロールを再度ステートメントに追加しようとすると、アプリケーションから
(int)sqlCommand.Parameters["@ReturnValue"].Value
いつも私をください0
。誰でもこの動作の原因を教えてもらえますか