发现.Net 的一个有关Response.writeFile()相关的Bug,请求热心的哥们验证,或解决~~~

问题描述

问题描述:下载文件时,我使用的是Response.writeFile()方法,所下载的文件一个二进制文件.app.lst.我已在IIS的Mime中设置了.lst为application/lst.我想实现下载app.lst.程序代码:[app.aspx]stringtargetName="app.lst";//下载后的文件名定义stringfileName=Server.MapPath("~/"+targetName);//下载文件的全路径FileInfofileInfo=newFileInfo(fileName);//文件确定路径是对的,省去了判断文件是否存在的代码Response.Clear();Response.Status="206PartialContent";Response.ContentType="application/lst";Response.AddHeader("Content-Length",fileInfo.Length.ToString());Response.AddHeader("Content-Range","bytes0-"+(fileInfo.Length-1)+"/"+fileInfo.Length);Response.AddHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(targetName,System.Text.Encoding.ASCII));Response.WriteFile(fileInfo.FullName);Response.End();==================================================================以上代码如果直接请求(.aspx后不带任何参数)http://localhost:xxx/web/app.aspx会报错,说找不到资源如果在请求地址后面加一个"?",即请求地址为http://localhost:xxx/web/app.aspx?才可以正常下载.还有一种办法,不用writeFile用,writeBinary(byte[])可以正常下载...不需要请地址的带"?"我的分析过程:1.copy一文本文件helloworld.txt到相同的下载目录,下载文件名当然也改为helloworld.txt2.Response.ContentType="application/lst";改为"text/xml"3.请求http://localhost:xxx/web/app.aspx,可以下接下载.以上区别在于text/xml是系统已知的contenttype而application/lst是我自定义的lst..net对于自义于的contenttype的文件下载时,有这错误~~~~.还有请教,对于下载文件,是否writefile效率会要高于writeBinary(byte[])呢?不知writefile是如何实现的,如果用writeBinary只能先将文件内容读取到byte[]再Response.writeBinary(byte[]).这样服务器有可能压力大一些.请问高手他们对于下载二进制文件有何区别,writeBinary相对writeFile会增大服务器压力,或降底效率吗?

解决方案

解决方案二:
这个帖子曾发在MSCNC#版块,一两天没有回,觉得实在冷啊~~.应该基本可以断定是.NET的一个bug,有兴趣或有同样经验的XDJM们验证一下~或帮我指出的问题所在,万分感谢~~~!!!!!!!!!!!!!
解决方案三:
自己结帖! 犯了一个错误!去掉下面的Response.Status="206PartialContent";加上这一行,让IE以为你服务器发送的文件还没有发完,去掉这一行就好了

时间: 2024-08-15 06:58:48

发现.Net 的一个有关Response.writeFile()相关的Bug,请求热心的哥们验证,或解决~~~的相关文章

js-jqery循环嵌入循环,发现只能选中一个,求大神帮忙看看怎么弄

问题描述 jqery循环嵌入循环,发现只能选中一个,求大神帮忙看看怎么弄 遇到一个jqery循环的问题 求大神帮忙看看 我数据库里面获取到是数据是这样的格式 1.xxx,2xxx,3xxx 然后我进行截取,转换成了数组,然后进行循环这个数组 然后在循环里面嵌入循环,用于循环获取这些数据 然后数据进行比对,对上了,就选择 我现在发现只能选中一个 求解 解决方案 你这么弄,我也不清楚什么原因,或者你说你想要实现什么效果,我帮你调调 解决方案二: this用对了吗????? 解决方案三: var st

Response.WriteFile("http://www.x.com/1.htm");

问题描述 这种方式可以用么?Response.WriteFile():访问其他站点的页面.会报它不是一个有效的地址 解决方案 解决方案二:Response.Redirect("http://www.baidu.com"); 解决方案三:引用1楼diaodiaop的回复: Response.Redirect("http://www.baidu.com"); 不是有效的路径哦解决方案四:<formid="form1"runat="se

context.Response.WriteFile(context.Request.PhysicalPath) 数据无法覆盖的问题

问题描述 用context.Response.WriteFile(context.Request.PhysicalPath)写入数据,然后用WebClient.DownloadFile(url,stringname)将其下载.接着再写入另外一个文件,此时再下载,虽然文件名可以按照命令变为第二次定义的文件名,可是内容却还是第一次写入的内容,context.Response.WriteFile(context.Request.PhysicalPath)无法覆盖么 解决方案 解决方案二:你在写完第一个

context.Response.WriteFile(context.Request.PhysicalPath)

问题描述 aspnet在一般处理程序中,可以使用context.Response.WriteFile输出页面,如果页面上含有用户控件!则通过context.Response.WriteFile(context.Request.PhysicalPath)无法将页面完成输出,即页面用户控件无法输出!求解决方法! 解决方案 解决方案二:莫非没有人遇到过这样的问题?解决方案三:System.IO.File.ReadAllText(path);解决方案四:引用2楼的回复: System.IO.File.R

突然发现有人翻译了Android开发的相关开发文档,而且翻译得很好,推荐下

突然发现有人翻译了Android开发的相关开发文档,而且翻译得很好,推荐下   http://wiki.eoeandroid.com/Android_Training http://wiki.eoeandroid.com/Android_API_Guides http://wiki.eoeandroid.com/Android_Design http://wiki.eoeandroid.com/Android_Reference http://wiki.eoeandroid.com/Androi

各位大哥,麻烦看看下面这段代码,在ie6下一点问题都没有,但是在Ie7下却显示不出效果,经查是Response.WriteFile(filePath)的问题,估计是iE7安全性太高,可是设为最低还不行,大家帮解决下啊.

问题描述 if(!IsPostBack){NameValueCollectionnameValue=Request.QueryString;if(nameValue==null)return;stringfilePath=nameValue.Get("File");if(filePath==null||filePath=="")return;filePath=Request.PhysicalApplicationPath+"rpt\"+fileP

关于Response.WriteFile() 方法涉及的权限问题

问题描述 privatevoidWriteFile(stringpath){try{Response.WriteFile(path);}catch(Exceptione){Utility.JSUtil.log("Icon:"+path,e);}Response.End();}代码如图,path参数传入:\192.168.0.42Attachmentstest.png报的错误System.UnauthorizedAccessException:Accesstothepath'\192.1

求解一下-求解用php做一个web service的相关程序??不知道哪里出问题了?谢谢!!!

问题描述 求解用php做一个web service的相关程序??不知道哪里出问题了?谢谢!!! <?php class soap { private $tel; private $num; public function Book($tel,$num) { file_put_contents("d:/mylog.log",$tel,FILE_APPEND); $this->tel=$tel; $this->num=$num;//???? $conn=mysql_con

每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享

原文:每一个程序员都应该知道的高并发处理技巧.创业公司如何解决高并发问题.互联网高并发问题解决思路.caoz大神多年经验总结分享 本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头的方案可能并不适合创业公司,那么如何保证高并发问题不成为创业路上的拦路虎,是每一个全栈工程师.资深系统工程师.有理想的程序员必备的技能,希望本文助您寻找属于自己的"成金之