在我的ASP.NET MVC 5应用程序中,我正在尝试访问Request.InputStream
属性,但是我得到以下异常:
System.NullReferenceException: Object reference not set to an instance of an object.
at Telerik.Web.UI.Upload.RequestParser.MergeArrays(Byte[] array1, Byte[] array2)
at Telerik.Web.UI.Upload.RequestParser.get_FirstBoundary()
at Telerik.Web.UI.Upload.RequestParser..ctor(Byte[] boundary, Encoding encoding, RequestStateStore requestStateStore)
at Telerik.Web.UI.Upload.ProgressWorkerRequest.get_Parser()
at Telerik.Web.UI.Upload.ProgressWorkerRequest.UpdateProgress(Byte[] buffer, Int32 validBytes
at Telerik.Web.UI.Upload.ProgressWorkerRequest.GetPreloadedEntityBody()
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.get_InputStream()
如您所见,Telerik组件抛出异常。我确实在我的项目中使用Telerik Web控件,但它们都与此控制器无关。即使我使用工具生成请求,也会发生异常。在我看来,Telerik以某种方式将这个ProgressWorkerRequest对象注入我的HttpRequest。
有关如何摆脱它的任何线索?
答案 0 :(得分:0)
它不必与您的控制器相关。它与Telerik上传者正在进行的过程有关,而不是“摆脱”#34;。基本上,它告诉你Telerik上传程序没有完成,因为它没有找到它所期望的内容。
由于Telerik控件通常很容易使用,因此您只需要这样的东西来获取文件的输入流:
public ActionResult UploadFile(IEnumerable<HttpPostedFileBase> fileUploader)
{
if (Request.Files.Count == 1)
{
string fileName = Request.Files[0].FileName;
Stream s = Request.Files[0].InputStream;
int size = Request.Files[0].ContentLength;
byte[] myFile = new byte[length];
s.Read(myFile, 0, size);
// Now, myFile should have the file, in bytes
}
}
如果您没有收到该文件,我会确保该应用程序通过您所指向的资源所处的帐户(您的帐户或服务帐户,如果是Web应用程序)具有权限。