asp.net mvc服务txt文件被截断怎么办?

2026-03-30 13:091阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计556个文字,预计阅读时间需要3分钟。

asp.net mvc服务txt文件被截断怎么办?

我正在尝试使用操作提供由数据库创建的txt文件。操作如下:

csharppublic ActionResult ATxt(){ var articulos=_articulosService.ObteTotsArticles(); return File(CatalegATxt.ArticlesToTxt(articulos), text/plain);}

CatalegATxt 类是:

我正在尝试使用操作提供由数据库创建的txt文件.行动如下:

public ActionResult ATxt() { var articulos = _articulosService.ObteTotsArticles(); return File(CatalegATxt.ATxt(articulos), "text/plain"); }

和CatalegATxt类是:

using System; using System.Collections.Generic; using System.IO; using System.Text; using WebDibaelsaMVC.DTOs.Busqueda; namespace WebDibaelsaMVC.TxtLib { public static class CatalegATxt { public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream, Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } stream.Seek(0, SeekOrigin.Begin); return stream; } public static string ToStringFix(this ArticuloBusquedaDTO article) { string result = ""; result += article.CodigoArticulo.PadRight(10, ' ').Substring(0, 10); result += article.EAN.Trim().PadLeft(13, '0').Substring(0, 13); result += article.NombreArticulo.PadRight(100, ' ').Substring(0, 100); result += article.Marca.PadRight(100, ' ').Substring(0, 100); result += article.Familia.PadRight(50, ' ').Substring(0, 50); result += article.PrecioCesion.ToStringFix(); result += article.PVP.ToStringFix(); return result; } private static string ToStringFix(this double numero) { var num = (int)Math.Round(numero * 100, 0); string result = num.ToString().PadLeft(10, '0'); return result; } } }

它只根据我从数据库中获取的东西写入文件行.但是当我查看文件时,它看起来被截断了.该文件大约是8Mb.我也尝试在从ATxt返回之前转换为byte [],结果相同.

任何的想法?

谢谢,

普约尔

更新:我还试图从相同的内容提供XML,它也被截断.它不会被截断数据(我认为它可能是一个EOF字符),但它在标签的中间被截断…

asp.net mvc服务txt文件被截断怎么办?

我遇到了完全相同的问题.文本文件将始终作为截断返回.

我突然想到它可能是一个“潮红”的问题,事实确实如此.编写器的缓冲区在操作结束时没有被刷新 – 因为没有使用块或者Close()调用 – 它会自动刷新.

你需要打电话:

streamWriter.Flush();

在MVC接管流之前.

这是你的方法应该是这样的:

public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream, Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } // Flush the stream writer buffer streamWriter.Flush(); stream.Seek(0, SeekOrigin.Begin); return stream; }

希望这可以帮助!

米罗斯拉夫

标签:aspnet

本文共计556个文字,预计阅读时间需要3分钟。

asp.net mvc服务txt文件被截断怎么办?

我正在尝试使用操作提供由数据库创建的txt文件。操作如下:

csharppublic ActionResult ATxt(){ var articulos=_articulosService.ObteTotsArticles(); return File(CatalegATxt.ArticlesToTxt(articulos), text/plain);}

CatalegATxt 类是:

我正在尝试使用操作提供由数据库创建的txt文件.行动如下:

public ActionResult ATxt() { var articulos = _articulosService.ObteTotsArticles(); return File(CatalegATxt.ATxt(articulos), "text/plain"); }

和CatalegATxt类是:

using System; using System.Collections.Generic; using System.IO; using System.Text; using WebDibaelsaMVC.DTOs.Busqueda; namespace WebDibaelsaMVC.TxtLib { public static class CatalegATxt { public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream, Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } stream.Seek(0, SeekOrigin.Begin); return stream; } public static string ToStringFix(this ArticuloBusquedaDTO article) { string result = ""; result += article.CodigoArticulo.PadRight(10, ' ').Substring(0, 10); result += article.EAN.Trim().PadLeft(13, '0').Substring(0, 13); result += article.NombreArticulo.PadRight(100, ' ').Substring(0, 100); result += article.Marca.PadRight(100, ' ').Substring(0, 100); result += article.Familia.PadRight(50, ' ').Substring(0, 50); result += article.PrecioCesion.ToStringFix(); result += article.PVP.ToStringFix(); return result; } private static string ToStringFix(this double numero) { var num = (int)Math.Round(numero * 100, 0); string result = num.ToString().PadLeft(10, '0'); return result; } } }

它只根据我从数据库中获取的东西写入文件行.但是当我查看文件时,它看起来被截断了.该文件大约是8Mb.我也尝试在从ATxt返回之前转换为byte [],结果相同.

任何的想法?

谢谢,

普约尔

更新:我还试图从相同的内容提供XML,它也被截断.它不会被截断数据(我认为它可能是一个EOF字符),但它在标签的中间被截断…

asp.net mvc服务txt文件被截断怎么办?

我遇到了完全相同的问题.文本文件将始终作为截断返回.

我突然想到它可能是一个“潮红”的问题,事实确实如此.编写器的缓冲区在操作结束时没有被刷新 – 因为没有使用块或者Close()调用 – 它会自动刷新.

你需要打电话:

streamWriter.Flush();

在MVC接管流之前.

这是你的方法应该是这样的:

public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream, Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } // Flush the stream writer buffer streamWriter.Flush(); stream.Seek(0, SeekOrigin.Begin); return stream; }

希望这可以帮助!

米罗斯拉夫

标签:aspnet