📄 sqlpersonalizationprovider.cs
字号:
command.ExecuteNonQuery();
parameter = command.Parameters[0];
if (parameter != null && parameter.Value != null && parameter.Value is Int32) {
count = (Int32) parameter.Value;
}
}
finally {
if (connectionHolder != null) {
connectionHolder.Close();
connectionHolder = null;
}
}
}
catch {
throw;
}
return count;
}
public override int GetCountOfState(PersonalizationScope scope, PersonalizationStateQuery query) {
PersonalizationProviderHelper.CheckPersonalizationScope(scope);
if (scope == PersonalizationScope.Shared) {
string pathToMatch = null;
if (query != null) {
pathToMatch = CheckAndTrimString(query.PathToMatch, "query.PathToMatch", false, maxStringLength);
}
return GetCountOfSharedState(pathToMatch);
}
else {
string pathToMatch = null;
DateTime userInactiveSinceDate = DefaultInactiveSinceDate;
string usernameToMatch = null;
if (query != null) {
pathToMatch = CheckAndTrimString(query.PathToMatch, "query.PathToMatch", false, maxStringLength);
userInactiveSinceDate = query.UserInactiveSinceDate;
usernameToMatch = CheckAndTrimString(query.UsernameToMatch, "query.UsernameToMatch", false, maxStringLength);
}
return GetCountOfUserState(pathToMatch, userInactiveSinceDate, usernameToMatch);
}
}
private int GetCountOfUserState(string path, DateTime inactiveSinceDate, string username) {
SqlConnectionHolder connectionHolder = null;
SqlConnection connection = null;
int count = 0;
try {
try {
connectionHolder = GetConnectionHolder();
connection = connectionHolder.Connection;
CheckSchemaVersion( connection );
SqlCommand command = new SqlCommand("dbo.aspnet_PersonalizationAdministration_GetCountOfState", connection);
SetCommandTypeAndTimeout(command);
SqlParameterCollection parameters = command.Parameters;
SqlParameter parameter = parameters.Add(new SqlParameter("Count", SqlDbType.Int));
parameter.Direction = ParameterDirection.Output;
parameter = parameters.Add(new SqlParameter("AllUsersScope", SqlDbType.Bit));
parameter.Value = false;
parameters.AddWithValue("ApplicationName", ApplicationName);
parameter = parameters.Add("Path", SqlDbType.NVarChar);
if (path != null) {
parameter.Value = path;
}
parameter = parameters.Add("UserName", SqlDbType.NVarChar);
if (username != null) {
parameter.Value = username;
}
parameter = parameters.Add("InactiveSinceDate", SqlDbType.DateTime);
if (inactiveSinceDate != DefaultInactiveSinceDate) {
parameter.Value = inactiveSinceDate.ToUniversalTime();
}
command.ExecuteNonQuery();
parameter = command.Parameters[0];
if (parameter != null && parameter.Value != null && parameter.Value is Int32) {
count = (Int32) parameter.Value;
}
}
finally {
if (connectionHolder != null) {
connectionHolder.Close();
connectionHolder = null;
}
}
}
catch {
throw;
}
return count;
}
public override void Initialize(string name, NameValueCollection configSettings) {
// Remove CAS in sample: HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
// configSettings cannot be null because there are required settings needed below
if (configSettings == null) {
throw new ArgumentNullException("configSettings");
}
if (String.IsNullOrEmpty(name)) {
name = "SqlPersonalizationProvider";
}
// description will be set from the base class' Initialize method
if (string.IsNullOrEmpty(configSettings["description"])) {
configSettings.Remove("description");
configSettings.Add("description", SR.GetString(SR.SqlPersonalizationProvider_Description));
}
base.Initialize(name, configSettings);
_SchemaVersionCheck = 0;
// If not available, the default value is set in the get accessor of ApplicationName
_applicationName = configSettings["applicationName"];
if (_applicationName != null) {
configSettings.Remove("applicationName");
if (_applicationName.Length > maxStringLength) {
throw new ProviderException(SR.GetString(
SR.PersonalizationProvider_ApplicationNameExceedMaxLength, maxStringLength.ToString(CultureInfo.CurrentCulture)));
}
}
string connectionStringName = configSettings["connectionStringName"];
if (String.IsNullOrEmpty(connectionStringName)) {
throw new ProviderException(SR.GetString(SR.PersonalizationProvider_NoConnection));
}
configSettings.Remove("connectionStringName");
string connectionString = SqlConnectionHelper.GetConnectionString(connectionStringName, true, true);
if (String.IsNullOrEmpty(connectionString)) {
throw new ProviderException(SR.GetString(SR.PersonalizationProvider_BadConnection, connectionStringName));
}
_connectionString = connectionString;
_commandTimeout = SecUtility.GetIntValue(configSettings, "commandTimeout", -1, true, 0);
configSettings.Remove("commandTimeout");
if (configSettings.Count > 0) {
string invalidAttributeName = configSettings.GetKey(0);
throw new ProviderException(SR.GetString(SR.PersonalizationProvider_UnknownProp, invalidAttributeName, name));
}
}
private void CheckSchemaVersion( SqlConnection connection )
{
string[] features = { "Personalization" };
string version = "1";
SecUtility.CheckSchemaVersion( this,
connection,
features,
version,
ref _SchemaVersionCheck );
}
/// <devdoc>
/// </devdoc>
private byte[] LoadPersonalizationBlob(SqlConnection connection, string path, string userName) {
SqlCommand command;
if (userName != null) {
command = new SqlCommand("dbo.aspnet_PersonalizationPerUser_GetPageSettings", connection);
}
else {
command = new SqlCommand("dbo.aspnet_PersonalizationAllUsers_GetPageSettings", connection);
}
SetCommandTypeAndTimeout(command);
command.Parameters.Add(CreateParameter("@ApplicationName", SqlDbType.NVarChar, this.ApplicationName));
command.Parameters.Add(CreateParameter("@Path", SqlDbType.NVarChar, path));
if (userName != null) {
command.Parameters.Add(CreateParameter("@UserName", SqlDbType.NVarChar, userName));
command.Parameters.Add(CreateParameter("@CurrentTimeUtc", SqlDbType.DateTime, DateTime.UtcNow));
}
SqlDataReader reader = null;
try {
reader = command.ExecuteReader(CommandBehavior.SingleRow);
if (reader.Read()) {
int length = (int)reader.GetBytes(0, 0, null, 0, 0);
byte[] state = new byte[length];
reader.GetBytes(0, 0, state, 0, length);
return state;
}
}
finally {
if (reader != null) {
reader.Close();
}
}
return null;
}
/// <internalonly />
protected override void LoadPersonalizationBlobs(WebPartManager webPartManager, string path, string userName, ref byte[] sharedDataBlob, ref byte[] userDataBlob) {
sharedDataBlob = null;
userDataBlob = null;
SqlConnectionHolder connectionHolder = null;
SqlConnection connection = null;
try {
try {
connectionHolder = GetConnectionHolder();
connection = connectionHolder.Connection;
CheckSchemaVersion( connection );
sharedDataBlob = LoadPersonalizationBlob(connection, path, null);
if (!String.IsNullOrEmpty(userName)) {
userDataBlob = LoadPersonalizationBlob(connection, path, userName);
}
}
finally {
if (connectionHolder != null) {
connectionHolder.Close();
connectionHolder = null;
}
}
}
catch {
throw;
}
}
/// <devdoc>
/// </devdoc>
private void ResetPersonalizationState(SqlConnection connection, string path, string userName) {
SqlCommand command;
if (userName != null) {
command = new SqlCommand("dbo.aspnet_PersonalizationPerUser_ResetPageSettings", connection);
}
else {
command = new SqlCommand("dbo.aspnet_PersonalizationAllUsers_ResetPageSettings", connection);
}
SetCommandTypeAndTimeout(command);
command.Parameters.Add(CreateParameter("@ApplicationName", SqlDbType.NVarChar, ApplicationName));
command.Parameters.Add(CreateParameter("@Path", SqlDbType.NVarChar, path));
if (userName != null) {
command.Parameters.Add(CreateParameter("@UserName", SqlDbType.NVarChar, userName));
command.Parameters.Add(CreateParameter("@CurrentTimeUtc", SqlDbType.DateTime, DateTime.UtcNow));
}
command.ExecuteNonQuery();
}
/// <internalonly />
protected override void ResetPersonalizationBlob(WebPartManager webPartManager, string path, string userName) {
SqlConnectionHolder connectionHolder = null;
SqlConnection connection = null;
try {
try {
connectionHolder = GetConnectionHolder();
connection = connectionHolder.Connection;
CheckSchemaVersion( connection );
ResetPersonalizationState(connection, path, userName);
}
finally {
if (connectionHolder != null) {
connectionHolder.Close();
connectionHolder = null;
}
}
}
catch {
throw;
}
}
private int ResetAllState(PersonalizationScope scope) {
SqlConnectionHolder connectionHolder = null;
SqlConnection connection = null;
int count = 0;
try {
try {
connectionHolder = GetConnectionHolder();
connection = connectionHolder.Connection;
CheckSchemaVersion( connection );
SqlCommand command = new SqlCommand("dbo.aspnet_PersonalizationAdministration_DeleteAllState", connection);
SetCommandTypeAndTimeout(command);
SqlParameterCollection parameters = command.Parameters;
SqlParameter parameter = parameters.Add(new SqlParameter("AllUsersScope", SqlDbType.Bit));
parameter.Value = (scope == PersonalizationScope.Shared);
parameters.AddWithValue("ApplicationName", ApplicationName);
parameter = parameters.Add(new SqlParameter("Count", SqlDbType.Int));
parameter.Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
parameter = command.Parameters[2];
if (parameter != null && parameter.Value != null && parameter.Value is Int32) {
count = (Int32) parameter.Value;
}
}
finally {
if (connectionHolder != null) {
connectionHolder.Close();
connectionHolder = null;
}
}
}
catch {
throw;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -