是否可以使用其他参数增加MVC控制器操作的ASP.NET请求的maxRequestLength?
是否可以使用其他参数增加MVC控制器操作的ASP.NET请求的maxRequestLength 我有一个UploadController,它的ActionResult看起来像这样是否可以使用其他参数增加MVC控制器操作的ASP.NET请求的maxRequestLength?,asp.net,asp.net-mvc,file-upload,web-config,filesize,Asp.net,Asp.net Mvc,File Upload,Web Config,Filesize,是否可以使用其他参数增加MVC控制器操作的ASP.NET请求的maxRequestLength 我有一个UploadController,它的ActionResult看起来像这样 [HttpPost] public ActionResult VideoUpload(int memberId) { var status= _docRepo.SaveDocument(DocumentType.Video, Request.Files, memberId); ret
[HttpPost]
public ActionResult VideoUpload(int memberId)
{
var status= _docRepo.SaveDocument(DocumentType.Video, Request.Files, memberId);
return Json(new { success = true, status = status});
}
文件可能非常大,我在web.config中增加了MaxRequestLength并可以上传文件,但我担心安全问题。所以我尝试了这个,但它不起作用:
<location path="VideoUpload">
<system.web>
<httpRuntime maxRequestLength="1024000" executionTimeout="600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1024000"/>
</requestFiltering>
</security>
</system.webServer>
</location>
有什么想法吗?
(上传方法使用swfupload)您是否考虑过异步调用action controller方法,甚至可以调用新线程来保存文档,这样网页就不会等待响应并冒超时的风险 使用jquery ajax调用调用控制器和任务并行库来保存文档。ajax调用可以在获得响应后调用成功/失败处理程序 看起来像这样
$(function() {
$('selector').click(function() {
var id = $('selector for id').val()
$.ajax({
type: "POST",
url: "/Controller/VideoUpload",
data: { memberId: id },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("selector for status").(msg);
},
});
});
});
动作方法看起来像这样,尽管这可能不准确。您也不必这样做,因为ajax post应该允许在浏览器不等待响应的情况下执行方法调用
[HttpPost]
public ActionResult VideoUpload(int memberId)
{
var status = Task.Factory.StartNew(() => _docRepo.SaveDocument(DocumentType.Video, Request.Files, memberId));
return Json(new { success = true, status = status.Result});
}
MVC控制器操作不使用Web.config的
位置
部分。看见您可以通过编程方式增加它 是否也增加了页面超时?以编程方式设置MaxRequestLength属性将应用于站点范围。