我们有文件存储帐户来存储我们客户的文件。 但文件经常崩溃。似乎内容被替换为空字符串,如“\ 0 \ 0 \ 0 \ 0 \ 0 \ 0”。
通常会在几天(或几个月)后发现损坏的文件。
cloudFile.DownloadText returns string like "\0\0\0\0\0\0".
以下是http://www.jssor.com/jssordev/problems*
的示例文件'100days.slider'我们通过以下3种方式将文件保存到azure文件存储中,
cloudFile.UploadText(content, Encoding.UTF8);
dstCloudFile.UploadFromStream(srcCloudFile.OpenRead());
cloudFile.UploadFromStream(httpPostedFile.InputStream);
有谁知道发生了什么事?
检查http://www.jssor.com/danishrabbani*处的'full-width-slider.slider' 今天这是一个新的损坏文件(2016-10-24)。
用户经历了以下两个步骤,并在第二步找到了问题。
[确定]用户在http://www.jssor.com/danishrabbani/full-width-slider.slider/=edit编辑了文件,这意味着它正确读取了文件。
[问题]然后用户从上一页转到http://www.jssor.com/danishrabbani/full-width-slider.slider/=preview。
两个步骤都读取相同的文件,因此问题可能是由第二次读取引起的。
假设用户在步骤1和步骤2之间保存了数据,那么问题应该由cloudFile.UploadText(content, Encoding.UTF8);
引起。
编辑2016-10-26
今天在这里找到了新的空文件'different-size-photo-slider-with-text.slider'http://www.jssor.com/mfleury*
我们调查了UploadText
和UploadFromStream
的文件上传方式,没有异常。我认为问题出在azure文件存储服务器端或文件存储SDK库。
编辑2016-10-27
今天的新空文件'different-size-photo-slider.slider'http://www.jssor.com/zubairqd*
编辑2016-11-08
没有异常,文件上传总是成功。
用户通常会将我们的演示版副本保存为dstCloudFile.UploadFromStream(srcCloudFile.OpenRead());
之后,用户在滑块制作器中编辑文件,然后保存文件,
cloudFile.UploadText(content, Encoding.UTF8);
我们跟踪了损坏文件的读取,大多数情况下,它发生在X64或WOW64系统上的firefox(版本49)。所以问题可能是由cloudFile.UploadText(content, Encoding.UTF8);
引起的。
此外,它发生在我的win7(x86)系统大约1年前,当时没有lzw压缩。
要从滑块制作器保存文件,它会将lzw压缩数据发送到我们的服务器,然后解压缩,然后cloudFile.UploadText
到文件存储。我们检查了前两个字符是否为“\ 0 \ 0”,但我们没有找到任何类似的文字。