防止在ASP.NET 4.0中上传大文件
|
我们想限制我们网站上的最大上传文件大小.我们已经在web.config中设置了相应的限制.我们遇到的问题是,如果上传了一个非常大的文件(例如1 GB),则在生成服务器端错误之前,将上传整个文件,并且错误的类型是不同的文件是巨大的还是不. 有没有办法在实际上传之前检测待处理文件上传的大小? 以下是我将相关的web.config设置限制为16 MB的请求: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<httpRuntime maxRequestLength="12288"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="12582912"/>
</requestFiltering>
</security>
</system.webServer>
</configuration>
我已经尝试创建一个HTTP模块,所以我可以在请求生命周期早期拦截一个请求,但上传似乎发生在HttpApplication的BeginRequest事件之前: public class UploadModule : IHttpModule
{
private const int MaxUploadSize = 12582912;
public void Init(HttpApplication context)
{
context.BeginRequest += handleBeginRequest;
}
public void Dispose()
{
}
private void handleBeginRequest(object sender,EventArgs e)
{
// The upload takes place before this method gets called.
var app = sender as HttpApplication;
if (app.Request.Files.OfType<HttpPostedFile>()
.Any(f => f.ContentLength > MaxUploadSize))
{
app.Response.StatusCode = 413;
app.Response.StatusDescription = "Request Entity Too Large";
app.Response.End();
app.CompleteRequest();
}
}
}
更新: 我知道像Flash这样的客户端技术可以在上传之前检测文件大小,但是我们需要一个服务器端解决方法,因为我们希望定位不支持Flash / Java / ActiveX / Silverlight的平台.我相信IIS或ASP.NET有一个错误,允许大文件上传,尽管有限制,所以我提交了一个bug here. ISAPI扩展可以帮助我比HTTP模块和处理程序更多地控制请求处理,例如,如果Content-Length头被认为大于允许的限制,允许我中止上传? 更新2: 叹. Microsoft已经关闭了我作为重复提交的错误,但没有提供任何其他信息.他们希望他们不要放弃球. 更新3: 万岁!据微软称:
解决方法问题是上传使用HTTP Post请求立即发生,因此您只能在完成后才能检测到.如果你想要更多的控制,你应该尝试基于Flash的上传小部件有这个和更多.查看这个链接http://www.ajaxline.com/10-most-interesting-upload-widgets (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IIS 7强制新鲜图像
- asp.net-core-mvc – 如何在Asp.net Core MVC(又名Asp.Net
- asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual St
- asp.net-mvc – 如何从MVC WEB API Controller返回JSON
- asp.net – 为什么我应该使用N层方法当使用SqlDatasource时
- 如何在asp.net中使用JSON和JQuery从WebMethod返回DataTable
- asp.net – 提高性能的最佳方法(并以某种方式包括故障转移)
- asp.net – 您何时会在Web自定义控件上使用Web用户控件?
- asp.net – ASP MVC用户配置文件
- asp.net-mvc – asp.net mvc如何正确测试控制器
- 在Asp.net mvc中应该有服务层吗?
- asp.net-mvc – DDay iCal – 添加一个与会者
- .net-4.0 – 为什么有潜在危险的请求错误甚至Val
- asp.net-mvc – MVC 4 ModelBinder
- asp.net – aspx中__EVENTVALIDATION __VIEWSTAT
- asp.net-mvc – 在ASP.NET MVC中检测中止的请求
- 如何在ASP.NET中重命名文件?
- asp.net-mvc – 为什么WebViewPage在MVC3中是抽象
- asp.net-mvc-5 – 在默认的MVC5应用程序的帐户关
- asp.net – 如何使用转换语法更改web.config设置
