C# 从POST返回的行版本数据无效base64
我正在将Rowversion数据发送到我的视图,以便测试更新/删除SQL Server记录的并发性问题。记录中的Rowversion数据是字节[],必须将其转换为Base64字符串才能序列化。这是由我的ViewModel中的getter完成的。setter正在将返回的Base64数据转换回字节[]。(我认为这是处理SQL Server版本数据时的标准做法。) 我的模型是C# 从POST返回的行版本数据无效base64,c#,asp.net-mvc,base64,C#,Asp.net Mvc,Base64,我正在将Rowversion数据发送到我的视图,以便测试更新/删除SQL Server记录的并发性问题。记录中的Rowversion数据是字节[],必须将其转换为Base64字符串才能序列化。这是由我的ViewModel中的getter完成的。setter正在将返回的Base64数据转换回字节[]。(我认为这是处理SQL Server版本数据时的标准做法。) 我的模型是 public byte[] RowVersionId { get; set; } public string
public byte[] RowVersionId { get; set; }
public string RowVersionIdBase64
{
get
{
if (this.RowVersionId != null)
{
return Convert.ToBase64String(this.RowVersionId);
}
return string.Empty;
}
set
{
if (string.IsNullOrEmpty(value))
{
this.RowVersionId = null;
}
else
{
this.RowVersionId = Convert.FromBase64String(value);
}
}
}
Post导致错误“输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或填充字符中的非法字符。”
Firebug显示的Post参数是…(此处仅显示了相关数据-抱歉,这样会稍微破坏布局)
。。。
RowVersionIdBase64aaaaaaf3e= RowVersionId[]
0 RowVersionId[]
0 RowVersionId[]
0 RowVersionId[]
0 RowVersionId[]
0 RowVersionId[]
0 RowVersionId[]
23 RowVersionId[]
113 帖子来源是…(此处显示完整的帖子数据) 房地产ID=1&RateFromDate=Sat+Apr+15+2017+00%3100%3100+GMT%2B1000+(澳大利亚+东部+标准+时间)&RateToDate =Sat+Apr+15+2017+00%3A00%3A00+GMT%2B1000+(澳大利亚+东部+标准+时间)&RateName=fff&RateComment=&MinimumStay =1&WeekRate=0&WeekendRate=&WeekEndNightRate=150&MidweekNightRate=100&MonthRate=0&FullPeriodRate=0&Cancelled =false和DateCreated=Thu+Apr+14+2016+07%3A57%3A16+GMT%2B1000+(澳大利亚+东部+标准+时间)和DateCancelled =&RowVersionId%5B%5D=0&RowVersionId%5B%5D=0&RowVersionId%5B%5D=0&RowVersionId%5B%5D=0&RowVersionId%5B%5D=0&RowVersionId%5B %5D=0&RowVersionId%5B%5D=0&RowVersionId%5B%5D=23&RowVersionId%5B%5D=113&RowVersionIdBase64=aaaaaaaaaaa F3E%3D&Id=7 它有什么问题,我如何修复它
谢谢。此错误的一个可能原因是两个html输入具有相同的名称。此错误的一个可能原因是两个html输入具有相同的名称。--rowvers在表中定义为时间戳 选择顶部(100) 罗弗斯, (为XML路径(“”)选择CAST(rowversas varbinary(max)),二进制BASE64) 从…起 [hpodb].[dbo].[mytable] 再施放一次以不中断SSMS导出 选择顶部(100) 罗弗斯, 强制转换((选择XML路径(“”)的强制转换(rowversas varbinary(max)),选择BINARY BASE64作为varchar) 从[hpodb].[dbo].[mytable]——rowvers被定义为表中的时间戳 选择顶部(100) 罗弗斯, (为XML路径(“”)选择CAST(rowversas varbinary(max)),二进制BASE64) 从…起 [hpodb].[dbo].[mytable] 再施放一次以不中断SSMS导出 选择顶部(100) 罗弗斯, 强制转换((选择XML路径(“”)的强制转换(rowversas varbinary(max)),选择BINARY BASE64作为varchar)
在[hpodb].[dbo].[mytable]中,我注释掉了ViewModel中的setter,因为我确信在那里发生了错误,但仍然会发生相同的错误。那么我应该去哪里寻找呢?我的ViewModel中的RowVersionId似乎是个问题。我把它注释掉了(还有整个RowVersionIdBase64,而不是像上面那样注释掉setter),错误就消失了。你找到原因和解决方案了吗?我在ViewModel中注释掉了setter,因为我确信错误发生在那里,但同样的错误仍然发生。那么我应该去哪里寻找呢?我的ViewModel中的RowVersionId似乎是个问题。我把它注释掉了(还有整个RowVersionIdBase64,而不是像上面那样注释掉setter),错误就消失了。你找到原因和解决方案了吗?