热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于ASP.NET返回文件的问题

我今天发现我的程序中通过ASP.NET返回文件的程序,有很多ASF文件不能输出成功,系统提示ServerApplicationUnavailable开始
我今天发现我的程序中通过ASP.NET返回文件的程序,有很多ASF文件不能输出成功,系统提示Server Application Unavailable 开始我以为是ASF文件的问题,后来才发现是文件过大,原来ASP.NET的writeFile函数不能返回太大的文件,所以必须手工通过stream读取返回,具体程序如下:(其中的fileSpec包含文件路径)
None.gif System.IO.Stream iStream = null;
None.gif 
byte[] buffer = new Byte[10000
];
None.gif 
int
 length;
None.gif 
long
 dataToRead;
None.gif 
string  filename  =
 System.IO.Path.GetFileName(fileSpec);
None.gif 
try

ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{
InBlock.gif  iStream 
= new
 System.IO.FileStream(fileSpec, System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.Read);
InBlock.gif  dataToRead 
=
 iStream.Length;
InBlock.gif  Response.ContentType 
=
 GetContentType(fileSpec);
InBlock.gif  Response.AddHeader(
"Content-Disposition""attachment; filename=" +
 filename);
InBlock.gif    
while (dataToRead > 0
)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif
{
InBlock.gif   
if
 (Response.IsClientConnected) 
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif
{
InBlock.gif    length 
= iStream.Read(buffer, 010000
);
InBlock.gif    Response.OutputStream.Write(buffer, 
0
, length);
InBlock.gif    Response.Flush();
InBlock.gif    buffer
= new Byte[10000
];
InBlock.gif    dataToRead 
= dataToRead -
 length;
ExpandedSubBlockEnd.gif   }

InBlock.gif   
else
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    dataToRead 
= -1
;
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif }

None.gif 
catch (Exception ex) 
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif
{
InBlock.gif  Response.Write(
"Error : " +
 ex.Message);
ExpandedBlockEnd.gif }

None.gif 
finally
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{
InBlock.gif  
if (iStream != null

ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif
{
InBlock.gif   iStream.Close();
ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif }

None.gif
嗯,搞定,现在系统写得差不多了



推荐阅读
  • C# 中创建和执行存储过程的方法
    本文详细介绍了如何使用 C# 创建和调用 SQL Server 存储过程,包括连接数据库、定义命令类型、设置参数等步骤。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • protobuf 使用心得:解析与编码陷阱
    本文记录了一次在广告系统中使用protobuf进行数据交换时遇到的问题及其解决过程。通过这次经历,我们将探讨protobuf的特性和编码机制,帮助开发者避免类似的陷阱。 ... [详细]
  • 本文详细介绍了如何在Apache Kafka中进行Topic级别的配置,包括创建、修改和删除配置参数的具体步骤,并提供了详细的配置属性表。 ... [详细]
  • 根据官方定义,RxJava是一种用于异步编程和可观察数据流的API。其核心特性在于流式处理能力和丰富的操作符支持。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
author-avatar
_MIN_Y
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有