Skip to content

Commit 59159c6

Browse files
Change method of adding compat-SqlParams. (#88)
* Change method of adding compat-SqlParams. * Missed a parameter name change. * Varbinary(max) fixup. Better error message. Remove unused parameter.
1 parent 2bf3836 commit 59159c6

File tree

8 files changed

+123
-91
lines changed

8 files changed

+123
-91
lines changed

src/SqlSessionStateProviderAsync/Resources/SR.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/SqlSessionStateProviderAsync/Resources/SR.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
<value>Attribute not recognized '{0}'</value>
137137
</data>
138138
<data name="SessionTable_current" xml:space="preserve">
139-
<value>The table '{0}' is compatible with current repositories. Use the '{1}' repositoryType instead with the 'sessionTableName' attribute if applicable.</value>
139+
<value>The table '{0}' is compatible with a more recent repository type. Use the '{1}' repository type instead.</value>
140140
</data>
141141
<data name="SessionTable_not_found" xml:space="preserve">
142142
<value>The table '{0}' was not found in the database. The repositoryType '{1}' cannot create session state tables.</value>

src/SqlSessionStateProviderAsync/SqlFxCompatSessionStateRepository.cs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -506,17 +506,17 @@ public async Task<SessionItem> GetSessionStateItemAsync(string id, bool exclusiv
506506
// Use SProcs installed by aspnet_regsql
507507
case SessionTableType.Fx7:
508508
cmd = _commandHelper.CreateSqlCommandForSP("TempGetStateItemExclusive3");
509-
cmd.Parameters.AddSessionIdParameter(id, true)
510-
.AddSessionItemShortParameter(fxCompat: true)
509+
cmd.Parameters.AddFxSessionIdParameter(id)
510+
.AddItemShortParameter()
511511
.AddLockedParameter()
512512
.AddLockDateParameter()
513513
.AddLockCookieParameter()
514514
.AddActionFlagsParameter();
515515
break;
516516
case SessionTableType.Fx8:
517517
cmd = _commandHelper.CreateSqlCommandForSP("TempGetStateItemExclusive3");
518-
cmd.Parameters.AddSessionIdParameter(id, true)
519-
.AddSessionItemShortParameter(fxCompat: true)
518+
cmd.Parameters.AddFxSessionIdParameter(id)
519+
.AddItemShortParameter()
520520
.AddLockedParameter()
521521
.AddLockAgeParameter()
522522
.AddLockCookieParameter()
@@ -541,17 +541,17 @@ public async Task<SessionItem> GetSessionStateItemAsync(string id, bool exclusiv
541541
// Use SProcs installed by aspnet_regsql
542542
case SessionTableType.Fx7:
543543
cmd = _commandHelper.CreateSqlCommandForSP("TempGetStateItem3");
544-
cmd.Parameters.AddSessionIdParameter(id, true)
545-
.AddSessionItemShortParameter(fxCompat: true)
544+
cmd.Parameters.AddFxSessionIdParameter(id)
545+
.AddItemShortParameter()
546546
.AddLockedParameter()
547547
.AddLockDateParameter()
548548
.AddLockCookieParameter()
549549
.AddActionFlagsParameter();
550550
break;
551551
case SessionTableType.Fx8:
552552
cmd = _commandHelper.CreateSqlCommandForSP("TempGetStateItem3");
553-
cmd.Parameters.AddSessionIdParameter(id, true)
554-
.AddSessionItemShortParameter(fxCompat: true)
553+
cmd.Parameters.AddFxSessionIdParameter(id)
554+
.AddItemShortParameter()
555555
.AddLockedParameter()
556556
.AddLockAgeParameter()
557557
.AddLockCookieParameter()
@@ -602,7 +602,7 @@ public async Task<SessionItem> GetSessionStateItemAsync(string id, bool exclusiv
602602

603603
if (buf == null && (_tableType == SessionTableType.Fx7 || _tableType == SessionTableType.Fx8))
604604
{
605-
buf = (byte[])cmd.GetOutPutParameterValue(SqlParameterName.SessionItemShort).Value;
605+
buf = (byte[])cmd.GetOutPutParameterValue(SqlParameterName.ItemShort).Value;
606606
}
607607

608608
return new SessionItem(buf, true, lockAge, lockId, actions);
@@ -628,8 +628,8 @@ public async Task CreateOrUpdateSessionStateItemAsync(bool newItem, string id, b
628628
cmd = _commandHelper.CreateSqlCommandForSP("TempUpdateStateItemShort");
629629
else
630630
cmd = _commandHelper.CreateSqlCommandForSP("TempUpdateStateItemShortNullLong");
631-
cmd.Parameters.AddSessionIdParameter(id, true)
632-
.AddSessionItemShortParameter(length, buf, true)
631+
cmd.Parameters.AddFxSessionIdParameter(id)
632+
.AddItemShortParameter(length, buf)
633633
.AddTimeoutParameter(timeout)
634634
.AddLockCookieParameter(lockCookie);
635635
}
@@ -640,8 +640,8 @@ public async Task CreateOrUpdateSessionStateItemAsync(bool newItem, string id, b
640640
cmd = _commandHelper.CreateSqlCommandForSP("TempUpdateStateItemLong");
641641
else
642642
cmd = _commandHelper.CreateSqlCommandForSP("TempUpdateStateItemLongNullShort");
643-
cmd.Parameters.AddSessionIdParameter(id, true)
644-
.AddSessionItemLongImageParameter(length, buf, true)
643+
cmd.Parameters.AddFxSessionIdParameter(id)
644+
.AddItemLongParameter(length, buf)
645645
.AddTimeoutParameter(timeout)
646646
.AddLockCookieParameter(lockCookie);
647647
}
@@ -668,15 +668,15 @@ public async Task CreateOrUpdateSessionStateItemAsync(bool newItem, string id, b
668668
if (length <= SqlSessionStateRepositoryUtil.ITEM_SHORT_LENGTH)
669669
{
670670
cmd = _commandHelper.CreateSqlCommandForSP("TempInsertStateItemShort");
671-
cmd.Parameters.AddSessionIdParameter(id, true)
672-
.AddSessionItemShortParameter(length, buf, true)
671+
cmd.Parameters.AddFxSessionIdParameter(id)
672+
.AddItemShortParameter(length, buf)
673673
.AddTimeoutParameter(timeout);
674674
}
675675
else
676676
{
677677
cmd = _commandHelper.CreateSqlCommandForSP("TempInsertStateItemLong");
678-
cmd.Parameters.AddSessionIdParameter(id, true)
679-
.AddSessionItemLongImageParameter(length, buf, true)
678+
cmd.Parameters.AddFxSessionIdParameter(id)
679+
.AddItemLongParameter(length, buf)
680680
.AddTimeoutParameter(timeout);
681681
}
682682
break;
@@ -707,13 +707,13 @@ public async Task ResetSessionItemTimeoutAsync(string id)
707707
case SessionTableType.Fx7:
708708
case SessionTableType.Fx8:
709709
cmd = _commandHelper.CreateSqlCommandForSP("TempResetTimeout");
710-
cmd.Parameters.AddSessionIdParameter(id, true);
710+
cmd.Parameters.AddFxSessionIdParameter(id);
711711
break;
712712

713713
// Use internal SQL statements
714714
case SessionTableType.Async11:
715715
cmd = _commandHelper.CreateSqlCommand(ResetItemTimeoutSql);
716-
cmd.Parameters.AddSessionIdParameter(id, true);
716+
cmd.Parameters.AddSessionIdParameter(id);
717717
break;
718718
}
719719

@@ -733,7 +733,7 @@ public async Task RemoveSessionItemAsync(string id, object lockId)
733733
case SessionTableType.Fx7:
734734
case SessionTableType.Fx8:
735735
cmd = _commandHelper.CreateSqlCommandForSP("TempRemoveStateItem");
736-
cmd.Parameters.AddSessionIdParameter(id, true)
736+
cmd.Parameters.AddFxSessionIdParameter(id)
737737
.AddLockCookieParameter(lockId);
738738
break;
739739

@@ -761,7 +761,7 @@ public async Task ReleaseSessionItemAsync(string id, object lockId)
761761
case SessionTableType.Fx7:
762762
case SessionTableType.Fx8:
763763
cmd = _commandHelper.CreateSqlCommandForSP("TempReleaseStateItemExclusive");
764-
cmd.Parameters.AddSessionIdParameter(id, true)
764+
cmd.Parameters.AddFxSessionIdParameter(id)
765765
.AddLockCookieParameter(lockId);
766766
break;
767767

@@ -789,16 +789,16 @@ public async Task CreateUninitializedSessionItemAsync(string id, int length, byt
789789
case SessionTableType.Fx7:
790790
case SessionTableType.Fx8:
791791
cmd = _commandHelper.CreateSqlCommandForSP("TempInsertUninitializedItem");
792-
cmd.Parameters.AddSessionIdParameter(id, true)
793-
.AddSessionItemShortParameter(length, buf, true) // TODO - Fx just assumed this was "short" - in code and SProc.
792+
cmd.Parameters.AddFxSessionIdParameter(id)
793+
.AddItemShortParameter(length, buf) // TODO - Fx just assumed this was "short" - in code and SProc.
794794
.AddTimeoutParameter(timeout);
795795
break;
796796

797797
// Use internal SQL statements
798798
case SessionTableType.Async11:
799799
cmd = _commandHelper.CreateSqlCommand(InsertUninitializedItemSql);
800800
cmd.Parameters.AddSessionIdParameter(id)
801-
.AddSessionItemLongImageParameter(length, buf, true)
801+
.AddSessionItemLongImageParameter(length, buf)
802802
.AddTimeoutParameter(timeout);
803803
break;
804804
}

src/SqlSessionStateProviderAsync/SqlInMemoryTableSessionStateRepository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ DROP TABLE #tblExpiredSessions
223223
CREATE PROCEDURE {1} (
224224
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
225225
" + SqlParameterName.Timeout + @" int,
226-
" + SqlParameterName.SessionItemLong + @" varbinary
226+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
227227
) WITH NATIVE_COMPILATION, SCHEMABINDING AS
228228
BEGIN ATOMIC
229229
WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english');
@@ -261,7 +261,7 @@ INSERT [dbo].{0}
261261
CREATE PROCEDURE {1} (
262262
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
263263
" + SqlParameterName.Timeout + @" int,
264-
" + SqlParameterName.SessionItemLong + @" varbinary
264+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
265265
) WITH NATIVE_COMPILATION, SCHEMABINDING AS
266266
BEGIN ATOMIC
267267
WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english');
@@ -347,7 +347,7 @@ UPDATE [dbo].{0}
347347
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
348348
" + SqlParameterName.LockCookie + @" int,
349349
" + SqlParameterName.Timeout + @" int,
350-
" + SqlParameterName.SessionItemLong + @" varbinary
350+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
351351
) WITH NATIVE_COMPILATION, SCHEMABINDING AS
352352
BEGIN ATOMIC
353353
WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english');

src/SqlSessionStateProviderAsync/SqlParameterCollectionExtension.cs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,18 @@ namespace Microsoft.AspNet.SessionState
99

1010
static class SqlParameterCollectionExtension
1111
{
12-
public static SqlParameterCollection AddSessionIdParameter(this SqlParameterCollection pc, string id, bool fxCompat = false)
12+
public static SqlParameterCollection AddSessionIdParameter(this SqlParameterCollection pc, string id)
1313
{
14-
var param = new SqlParameter(fxCompat ? SqlParameterName.Compat_SessionId : SqlParameterName.SessionId, SqlDbType.NVarChar, SqlSessionStateRepositoryUtil.IdLength);
14+
var param = new SqlParameter(SqlParameterName.SessionId, SqlDbType.NVarChar, SqlSessionStateRepositoryUtil.IdLength);
15+
param.Value = id;
16+
pc.Add(param);
17+
18+
return pc;
19+
}
20+
21+
public static SqlParameterCollection AddFxSessionIdParameter(this SqlParameterCollection pc, string id)
22+
{
23+
var param = new SqlParameter(SqlParameterName.FxSessionId, SqlDbType.NVarChar, SqlSessionStateRepositoryUtil.IdLength);
1524
param.Value = id;
1625
pc.Add(param);
1726

@@ -84,9 +93,9 @@ public static SqlParameterCollection AddTimeoutParameter(this SqlParameterCollec
8493
return pc;
8594
}
8695

87-
public static SqlParameterCollection AddSessionItemLongImageParameter(this SqlParameterCollection pc, int length, byte[] buf, bool fxCompat = false)
96+
public static SqlParameterCollection AddSessionItemLongImageParameter(this SqlParameterCollection pc, int length, byte[] buf)
8897
{
89-
var param = new SqlParameter(fxCompat ? SqlParameterName.Compat_ItemLong : SqlParameterName.SessionItemLong, SqlDbType.Image, length);
98+
var param = new SqlParameter(SqlParameterName.SessionItemLong, SqlDbType.Image, length);
9099
param.Value = buf;
91100
pc.Add(param);
92101

@@ -102,19 +111,28 @@ public static SqlParameterCollection AddSessionItemLongVarBinaryParameter(this S
102111
return pc;
103112
}
104113

105-
public static SqlParameterCollection AddSessionItemShortParameter(this SqlParameterCollection pc, int length = 0, byte[] buf = null, bool fxCompat = false)
114+
public static SqlParameterCollection AddItemLongParameter(this SqlParameterCollection pc, int length, byte[] buf)
115+
{
116+
var param = new SqlParameter(SqlParameterName.ItemLong, SqlDbType.Image, length);
117+
param.Value = buf;
118+
pc.Add(param);
119+
120+
return pc;
121+
}
122+
123+
public static SqlParameterCollection AddItemShortParameter(this SqlParameterCollection pc, int length = 0, byte[] buf = null)
106124
{
107125
SqlParameter param;
108126

109127
if (buf == null)
110128
{
111-
param = new SqlParameter(fxCompat ? SqlParameterName.Compat_ItemShort : SqlParameterName.SessionItemShort, SqlDbType.VarBinary, SqlSessionStateRepositoryUtil.ITEM_SHORT_LENGTH);
129+
param = new SqlParameter(SqlParameterName.ItemShort, SqlDbType.VarBinary, SqlSessionStateRepositoryUtil.ITEM_SHORT_LENGTH);
112130
param.Direction = ParameterDirection.Output;
113131
param.Value = Convert.DBNull;
114132
}
115133
else
116134
{
117-
param = new SqlParameter(fxCompat ? SqlParameterName.Compat_ItemShort : SqlParameterName.SessionItemShort, SqlDbType.VarBinary, length);
135+
param = new SqlParameter(SqlParameterName.ItemShort, SqlDbType.VarBinary, length);
118136
param.Value = buf;
119137
}
120138
pc.Add(param);

src/SqlSessionStateProviderAsync/SqlSessionStateRepository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ DROP TABLE #tblExpiredSessions
211211
CREATE PROCEDURE {1} (
212212
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
213213
" + SqlParameterName.Timeout + @" int,
214-
" + SqlParameterName.SessionItemLong + @" varbinary
214+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
215215
) AS
216216
DECLARE @now AS datetime
217217
DECLARE @nowLocal AS datetime
@@ -246,7 +246,7 @@ DECLARE @nowLocal AS datetime
246246
CREATE PROCEDURE {1} (
247247
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
248248
" + SqlParameterName.Timeout + @" int,
249-
" + SqlParameterName.SessionItemLong + @" varbinary
249+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
250250
) AS
251251
DECLARE @now AS datetime
252252
DECLARE @nowLocal AS datetime
@@ -324,7 +324,7 @@ DECLARE @nowLocal AS datetime
324324
" + SqlParameterName.SessionId + @" nvarchar(" + SqlSessionStateRepositoryUtil.IdLength + @"),
325325
" + SqlParameterName.LockCookie + @" int,
326326
" + SqlParameterName.Timeout + @" int,
327-
" + SqlParameterName.SessionItemLong + @" varbinary
327+
" + SqlParameterName.SessionItemLong + @" varbinary(max)
328328
) AS
329329
UPDATE {0} WITH (ROWLOCK)
330330
SET Expires = DATEADD(n, " + SqlParameterName.Timeout + @", GETUTCDATE()),

src/SqlSessionStateProviderAsync/SqlSessionStateRepositoryUtil.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@ static class SqlParameterName
2323
public const string LockCookie = "@" + nameof(LockCookie);
2424
public const string Timeout = "@" + nameof(Timeout);
2525
public const string Locked = "@" + nameof(Locked);
26-
public const string SessionItemShort = "@" + nameof(SessionItemShort);
2726
public const string SessionItemLong = "@" + nameof(SessionItemLong);
2827
public const string Flags = "@" + nameof(Flags);
2928
public const string LockAge = "@" + nameof(LockAge);
3029
public const string ActionFlags = "@" + nameof(ActionFlags);
3130
public const string Durablility = "@" + nameof(Durablility);
32-
public const string Compat_SessionId = "@id";
33-
public const string Compat_ItemShort = "@itemShort";
34-
public const string Compat_ItemLong = "@itemLong";
31+
public const string FxSessionId = "@id";
32+
public const string ItemShort = "@" + nameof(ItemShort);
33+
public const string ItemLong = "@" + nameof(ItemLong);
3534
}
3635

3736
static class Sec

0 commit comments

Comments
 (0)