2013-02-17 53 views
1

我现在有一个上传表单,它看起来像如何调试出现错误500的恶意表单上传?

<form action="/Upload/Registration?measurementId=139" enctype="multipart/form-data" method="post"> 
    <fieldset> 
     <legend>Registrationfiles</legend> 
     <input type="hidden" name="MeasurementId" value="139"/> 
      <div class="editor-field"> 
       <input id="RadioSelection" name="RadioSelection" type="radio" value="0" /> 
       <label>or</label> 
       <input type="hidden" name="RecordId[0]" value="375" /> 
       <input type="file" name="RegistrationFile[0]" /> 
      </div> 
     <p class="submit"> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
</form> 

而且我有UploadController两种方法:

[Authorize] 
public ActionResult Registration(int measurementId) 
{ 
    [...] 
    return View(registrationViewModel); 
} 

[HttpPost] 
[Authorize] 
public ActionResult Registration(RegistrationViewModel data, ICollection<int> RecordId, ICollection<HttpPostedFileBase> RegistrationFile) 
{ 
    [...] 
} 

当我访问http://mySite.com/Upload/Registration?measurementId=139我得到的形式(如预期),但当我提交它时,我得到Error 500 - (Internal Server Error)

这个bug的原因是什么?

我有很多断点,但都没有被击中。它只说明“错误500”。

这是响应头:

HTTP/1.1 500 Internal Server Error 
Cache-Control: private, s-maxage=0 
Server: Microsoft-IIS/7.5 
X-AspNetMvc-Version: 3.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Sun, 17 Feb 2013 18:50:13 GMT 
Content-Length: 0 

编辑:当我删除第二个方法,我没有得到一个错误500,我永远不会得到YSOD

+0

在FireBug中查看服务器响应。它显示了什么?你使用一些JavaScript? – 2013-02-17 18:45:28

+0

500通常是由异常服务器端造成的,但是如果你在本地运行,你应该得到一个YSOD和一个异常堆栈跟踪。 – Lloyd 2013-02-17 18:48:36

+0

看看响应正文,而不是标题。当服务器发送500个状态码时,会有一个响应体。里面有什么? – 2013-02-17 18:49:32

回答

0

在您的web.config中将customErrors设置为“On”并重定向到Error.cshmtl。你应该这样做只是为了修复500错误,然后把它放回“关”。

有关详细说明,请参阅Can't get defaultRedirect to workhttps://stackoverflow.com/a/6211961/1176596

一个可能的问题可能是您在View中使用的一个模型缺少默认构造函数。 如果是这样,您将在错误视图中看到MissingMethodException。