我们在ASP.NET MVC应用程序中使用自定义成员资格提供程序。我们一直在经历间歇性的'System.InvalidOperationException - 已经有一个打开的DataReader与这个Command关联,必须先关闭它。'所以我决定启用MARS。不支持关键字MultipleActiveResultSets
这是在web配置连接字符串...
<add name="CustomMembershipServices" connectionString="User ID=CUSTOM_USER;Password=pwd;Database=OUR_DB;Server=.\SQLEXPRESS;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
我们的代码现在引发ArgumentException:不支持关键字:在下面一行 'multipleactiverecordsets' ..
protected void CreateAndOpenConnection()
{
// Exception thrown here...
_connection = new SqlConnection(_connectionString);
_connection.Open();
}
针对SQL2005 Express和SQL2008 Standard版本时会出现同样的异常。有什么建议么?
针对这里AdaTheDev是使用数据读取器我看不到任何理由为什么会在同一连接上创建多个数据读取器的方法...
public bool CheckUserPassword(long userID, string password)
{
bool success = false;
if (!string.IsNullOrEmpty(password))
{
try
{
CreateAndOpenConnection();
using (SqlCommand cmd = CreateSqlCommandForStoredProcedure("CheckPassword"))
{
IPasswordUtility generator = new PasswordUtility();
cmd.Parameters.AddWithValue("UserID", userID);
cmd.Parameters.AddWithValue("Password", generator.HashPassword(password));
using (SqlDataReader reader = cmd.ExecuteReader())
{
success = reader.HasRows;
reader.Close();
}
}
}
finally
{
CloseConnection();
}
}
return success;
}
。
嗯,已经更新了我的答案。在代码中看不到任何错误。 – AdaTheDev 2010-02-24 11:47:11