Exception handling Windows Azure:未处理参数异常

Exception handling Windows Azure:未处理参数异常,exception-handling,azure,Exception Handling,Azure,我希望我的Azure应用程序创建一个blob并将数据写入其中。当我尝试它时,我得到了一个例外说明 异常未处理 流不可写 这是我的密码 var ms = new MemoryStream(); for (int k = 0; k < 10; k++) { using (StreamWriter sw = new StreamWriter(ms)) {

我希望我的Azure应用程序创建一个blob并将数据写入其中。当我尝试它时,我得到了一个例外说明

异常未处理

流不可写

这是我的密码

var ms = new MemoryStream();
            for (int k = 0; k < 10; k++)
            {
                using (StreamWriter sw = new StreamWriter(ms))
                {
                    string val = k.ToString();
                    if (k + 1 != len)
                        val = val + " ";
                    sw.Write(val);
                    sw.Flush();
                }
            }
            ms.Position = 0;
            blob.UploadFromStream(ms);
var ms=newmemoryStream();
对于(int k=0;k<10;k++)
{
使用(StreamWriter sw=新StreamWriter(ms))
{
字符串val=k.ToString();
如果(k+1!=len)
val=val+“”;
sw.Write(val);
sw.Flush();
}
}
ms.Position=0;
blob.UploadFromStream(毫秒);
我的代码正在为k=0执行。当k=1时引发异常。 有人能告诉我如何解决这个异常吗


此外,这是写入blob的正确步骤吗。如果没有,我哪里出错了以及如何纠正它。

我的猜测是StreamWriter的Finalize方法关闭了底层流(因此下次通过循环时,您无法写入该MemoryStream)

我认为可以通过在整个循环中放置“using(StreamWriter sw=newstreamwriter(ms))块来解决这个问题。无论如何,它可能比每次创建一个新的StreamWriter更有效

在任何情况下,如果您只是在写文本,最好执行以下操作:

StringBuilder sb = new StringBuilder();
for (int k = 0; k < 10; k++)
{
    sb.Append(k.ToString());
    if (k + 1 != len) sb.Append(" ");
}
blob.UploadText(sb.ToString());
blob.UploadText(string.Join(" ", Enumerable.Range(0, 10).Select(k => k.ToString()).ToArray()));