i was trying to write a string to a memory stream, but failed with the error message:
Memory stream is not expandable.
the line of code that produces this problem:
context.Response.Filter = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(myPage));
anyone have a workaround/fix for that?
stacktrace:
[NotSupportedException: Memory stream is not expandable.]
System.IO.MemoryStream.set_Capacity(Int32 value) +9385744
System.IO.MemoryStream.EnsureCapacity(Int32 value) +50
System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +265
System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr) +9155697
System.Web.HttpResponse.FilterOutput() +159
System.Web.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +52
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
The following code works correctly for me
public class Foo
{
public static void Main()
{
var myPage = "test string";
var repo = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(myPage));
}
}
It seems that the correct way to do this is to create the MemoryStream
using the default constructor
var repo = new System.IO.MemoryStream();
and then write to it
var stringBytes = System.Text.Encoding.UTF8.GetBytes(myPage);
repo.Write(stringBytes, 0, stringBytes.Length);
if you want to be able to read the stream as normal (eg using a StreamReader) then you will also need to call:
repo.Seek(0, SeekOrigin.Begin);