StreamWriter adiciona um \ r extra no final da linha

Criei uma classe com a responsabilidade de gerar um arquivo de texto em que cada linha represente as informações de um objeto da classe 'MyDataClass'. Abaixo está uma simplificação do meu código:

public class Generator
{
    private readonly Stream _stream;
    private readonly StreamWriter _streamWriter;
    private readonly List<MyDataClass> _items;

    public Generator(Stream stream)
    {
        _stream = stream;
        _streamWriter = new StreamWriter(_stream, Encoding.GetEncoding("ISO-8859-1"));
    }

    public void Generate()
    {
        foreach (var item in _items)
        {
            var line = AnotherClass.GetLineFrom(item);

            _streamWriter.WriteLine(line);
        }

        _streamWriter.Flush();
        _stream.Position = 0;
    }
}

E eu chamo essa classe assim:

using (var file = new FileStream("name", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    new Generator(file).Generate();
}

Quando executo o aplicativo no visual studio (eu testo com execução (Ctrl + F5), depuração (F5), com modo de depuração e liberação), tudo corre conforme o plano. Mas publico o aplicativo em um servidor IIS e agora a classe StreamWriter coloca um extra \ r antes do final da linha.

Confira a leitura hexadecimal dos dois arquivos gerados:

Executando no Visual Studio:http://www.jonataspiazzi.xpg.com.br/hex_vs.bmp

Executando no IIS:http://www.jonataspiazzi.xpg.com.br/hex_iis.bmp

Algumas coisas que eu já verifiquei:

Escreva oline variável (emvar line = AnotherClass.GetLineFrom(item);) em um log para ver se um '\ r' extra não é incluído pela classeAnotherClass.

Não resultou em nada, o último caractere emline é um caractere regular como o esperado (no exemplo acima, é um espaço).

Escreva outro código para verificar se o problema é geral para todas as instâncias do IIS StreamWriter.

Eu tentei isso:

var ms = new MemoryStream();
var sw = new StreamWriter(ms, Encoding.GetEncoding("ISO-8859-1"));

sw.WriteLine("Test");
sw.WriteLine("Of");
sw.WriteLine("Lines");

sw.Flush();
ms.Position = 0;

Nesse caso, o código funciona bem para o visual studio e o IIS.

Estou nisso há 3 dias, já tento tudo o que meu cérebro consegue pensar. Alguém tem alguma pista do que eu posso tentar?

ATUALIZAR

Ficar mais estranho! Eu tento substituir a linha_streamWriter.WriteLine(line); com:

_streamWriter.Write(linhaTexto + Environment.NewLine);

E pior ainda:

_streamWriter.Write(linhaTexto + "\r\n");

Ambos continuam gerando o extra\r personagem.

Eu tento substituir com isso:

_streamWriter.Write(linhaTexto + "#\r\n#");

E pegue:

http://www.jonataspiazzi.xpg.com.br/hex_sharp.bmp

questionAnswers(4)

yourAnswerToTheQuestion