小编ak1*_*ak1的帖子

反序列化压缩字符串时出错(解析完成之前遇到的Stream End)C#

我在反序列化字符串时遇到异常[System.Runtime.Serialization.SerializationException:在流分析结束之前遇到流结束。]请指导我该怎么做才能解决此错误。

byte[] compressed;

string content = "afjsklf lkjflfkldsflkfj fa fj lflkf lk kj lkj fldsjf lkflewru pjdslk jsdfi;j klnvmlvnetu iowu lknxvmln3-958u09v lsn";

var compMS = new MemoryStream();
using (var compressor = new GZipStream(compMS, CompressionMode.Compress))
{
    new BinaryFormatter().Serialize(compressor, content);
    compressed = compMS.ToArray();
}

var decompMS = new MemoryStream(compressed);
using (var decompressor = new GZipStream(decompMS, CompressionMode.Decompress))
{
    BinaryFormatter bf = new BinaryFormatter();
    decompMS.Position = 0;
    string result = (string)bf.Deserialize(decompMS);

}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用,decompMS.Seek(0, SeekOrigin.Begin);但异常仍然存在。

http://dotnetfiddle.net/PF7egd

.net c# compression serialization gzipstream

1
推荐指数
1
解决办法
2242
查看次数

如何从表的Max Id开始生成Sequence

我正在尝试使用此DML创建序列,我收到此错误:

'@maxBookingId'附近的语法不正确.

码:

 DECLARE @maxBookingId AS INT 

 SELECT @maxBookingId = MAX(bookingid) 
 FROM booking

 CREATE SEQUENCE Invoice_Seq  AS INTEGER  
 START WITH @maxBookingId
 INCREMENT BY 1  
 NO CYCLE;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

sql-server sequence

1
推荐指数
1
解决办法
1711
查看次数

Assert.Equal 不适用于日期

我写了一个简单的测试方法来验证一个将 long 值转换为 DateTime 的方法,以下是代码......

        [TestMethod]
    public void ConvertToDateTime_TestMethod()
    {
        long date = 1500024370374;

        DateTime result = date.GetDateTime(); 
        DateTime comparisonDate = new DateTime(2017, 07, 14, 9, 26, 10);
        Assert.AreEqual(result, comparisonDate);
    }
Run Code Online (Sandbox Code Playgroud)

重点是日期和时间值完全相同(也在观察窗口中验证)为什么会出现此异常?我发现这篇文章使用 delta 来比较微小的时间差异是否使比较失败,但仍然不确定为什么我仍然需要一个额外的函数来比较日期/时间断言。

编辑 1:这是我正在测试的日期转换方法

    public static DateTime GetDateTime(this long milliseconds)
    {
        try
        {
            return new DateTime(1970, 1, 1).AddMilliseconds(Convert.ToDouble(milliseconds));
        }
        catch { throw; }
    }
Run Code Online (Sandbox Code Playgroud)

即使有一个新的日期时间(长)的替代方法,但从逻辑上讲,这有什么问题?

c# mstest .net-core

1
推荐指数
1
解决办法
1958
查看次数