Jon*_*zzi 6 .net c# iis streamwriter visual-studio-2010
我创建了一个类,负责生成一个文本文件,其中每一行代表'MyDataClass'类对象的信息.以下是我的代码的简化:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我称这个类是这样的:
using (var file = new FileStream("name", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
new Generator(file).Generate();
}
Run Code Online (Sandbox Code Playgroud)
当我在visual studio上运行应用程序时(我使用run(Ctrl + F5)进行测试,使用调试和释放模式进行调试(F5))所有都按照计划进行.但是我在IIS服务器上发布了应用程序,现在StreamWriter类在行结束之前添加了一个额外的\ r \n.
检查两个生成的文件的十六进制读数:
在Visual Studio中运行:http: //www.jonataspiazzi.xpg.com.br/hex_vs.bmp
在IIS中运行:http: //www.jonataspiazzi.xpg.com.br/hex_iis.bmp
我已经检查过的一些事情:
将
line变量(invar line = AnotherClass.GetLineFrom(item);)写入日志中,以查看类是否包含额外的'\ r'AnotherClass.
没有结果,最后一个char line是一个像预期的常规char(在上面的例子中是一个空格).
编写另一个代码以查看问题是否适用于所有IIS StreamWriter实例.
我试过这个:
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;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,代码适用于visual studio和IIS.
我已经在这3天了,我已经尝试了大脑可以想到的一切.有没有人知道我可以尝试什么?
UPDATE
变得怪异!我尝试用以下代码替换该行_streamWriter.WriteLine(line);:
_streamWriter.Write(linhaTexto + Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
更糟糕的是:
_streamWriter.Write(linhaTexto + "\r\n");
Run Code Online (Sandbox Code Playgroud)
两者都保持产生额外的\r角色.
我尝试用这个代替:
_streamWriter.Write(linhaTexto + "#\r\n#");
Run Code Online (Sandbox Code Playgroud)
得到:
根据 MSDN,WriteLine
将后跟行终止符的数据写入文本字符串或流。
你的最后一行应该是
_streamWriter.Write(line);
Run Code Online (Sandbox Code Playgroud)
把它放在你的循环之外并改变你的循环,这样它就不会管理最后一行。
| 归档时间: |
|
| 查看次数: |
4671 次 |
| 最近记录: |