2010-06-22 2 views
0

Azure 응용 프로그램에서 BLOB를 만들고 데이터를 쓸 수있게하려고합니다. 나는 그것을 시도 할 때 나는Windows Azure : 예외 예외 처리되지 않았습니다.

스트림이 쓰기 가능하지 않은

경우 ArgumentException이 처리되지 않은 것을 진술이 예외를 가지고 여기

내 코드에 대해 실행지고

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); 

내 코드입니다 k = 0. k = 1 일 때 예외가 throw됩니다. 아무도이 예외를 해결하는 방법을 말해 줄 수 있습니까

또한 BLOB에 쓰기위한 올바른 절차입니까? 그렇지 않다면 어디서 잘못되었는지, 어떻게 해결해야하는지.

답변

1

내 생각에 StreamWriter의 Finalize 메서드는 기본 스트림을 닫습니다 (다음에 루프를 통과 할 때 해당 MemoryStream에 쓸 수 없음).

전체 루프 주위에 "using (StreamWriter sw = new StreamWriter (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())); 
관련 문제