Я пытаюсь реализовать поставщика пользовательских ролей для моего приложения .Net. Я пытаюсь проверить, существует ли роль, добавленная пользователем, в БД или нет, используя хранимую процедуру поставщика ролей Asp.NET, например
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
. Может ли кто-нибудь указать мне, что вызывает такое поведение
SafeDataReader
- person John x   schedule 10.01.2013