技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

asp.net(c#)File控件读取图片或视频等大文件出错的原因

作者:admin    时间:2018-5-24 10:47:2    浏览:

asp.net(c#)File控件读取图片小文件时没有问题,但一旦要读取图片或视频等大文件时便出错,这是什么原因呢?最近遇到这个问题,急需解决。

代码片段如下。

private void btnUpFiles_Click(object sender, System.EventArgs e)
{
  string pathName=this.File1.PostedFile.FileName.ToString();
  Response.Write(pathName);
}

很简单,就是用File控件获得上传文件的文件名。然而,这两行代码竟然显示错误。

我以为是取路径字符串的问题,所以就先截取路径和文件名,再截取文件的后缀名,分别保存为字符串,但是始终有错。代码片段如下:

string fullname=this.File1.PostedFile.FileName.ToString();//取全路径
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//取路径和文件名,去掉文件的后缀名
Session["firstname"]=firstname;//保存在一个session中

char [] spliter={'.'};//用来分割字符串的分割符
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//把全路径分割后的每一部分保存在数组中
Session["lastname"]=fileName[fileName.Length-1];//把数组中的最后一个元素(即后缀名)保存为一个session
Response.Redirect("test.aspx");//我想传到这个页面测试。

以上方法依然出错,错误原因好象根本与字符串无关。

查了下相关资料,有网友提到是 httpRuntime 的问题。

根据网友的意见,在 web.config 中的<system.web></system.web>内加入如下代码:

<httpRuntime
  executionTimeout="600"
  maxRequestLength="951200"
  useFullyQualifiedRedirectUrl="true"
  minFreeThreads="8"
  minLocalRequestFreeThreads="4"
  appRequestQueueLimit="100"
  enableVersionHeader="true"/>

问题终于得以解决!原来确实是httpRuntime的问题。

以下是来自MSDN的解释:

httpRuntime是配置asp.net http运行时设置,以确定如何处理对asp.net应用程序的请求。

  • executionTimeout:表示允许执行请求的最大时间限制,单位为秒。
  • maxRequestLength:指示 ASP.NET 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。
  • useFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的(采用 "http://server/path" 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。如果为 True,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项。
  • minFreeThreads:表示指定允许执行新请求的自由线程的最小数目。ASP.NET 为要求附加线程来完成其处理的请求而使指定数目的线程保持自由状态。默认值为 8。
  • minLocalRequestFreeThreads:表示ASP.NET 保持的允许执行新本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入 Web 服务器而导致的死锁。
  • appRequestQueueLimit:表示ASP.NET 将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503 - 服务器太忙”错误信息拒绝传入的请求。
  • enableVersionHeader:表示指定 ASP.NET 是否应输出版本标头。Microsoft Visual Studio 2005 使用该属性来确定当前使用的 ASP.NET 版本。对于生产环境,该属性不是必需的,可以禁用。

您可能对以下文章也感兴趣

标签: asp.net  File控件  
  • IT热文
  • 站长推荐