asp.net 中 request 与 context.request有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 中 request 与 context.request有啥区别?相关的知识,希望对你有一定的参考价值。
看了MSDN这一段不太明白:
Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间(含有 HttpContext 类)的默认引用,因此在 .aspx 页上可以引用 HttpContext 的成员,而不需要对 HttpContext 的完全限定类引用。例如,可只使用 Request.Browser 获取客户端浏览器的功能。但是,如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员,则必须在该模块中包括对 System.Web 命名空间的引用,同时还要完全限定对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的引用。例如,在代码隐藏页中,必须指定全名 HttpContext.Current.Request.Browser。
asp.net 中 request 与 context.request有什么区别吗?
?????????????????????????????????????????
Page 页中 实际上也是用到 System.Web.HttpContext.Current.Request
他调用的函数是:
public HttpRequest Request getreturn System.Web.HttpContext.Current.Request;
只要在同一个网站中 他们两获取的值都是一样的
放心使用吧 参考技术A context是一个请求实例。报含了这个请求的一些信息。比如参数,访问客户的ip地址等等。
每个page页面实际是继承了context。你可以在.cs中写this.Page.Request.调试看看就明白了 参考技术B 1
ASP.NET CORE 中的 Request.Files
【中文标题】ASP.NET CORE 中的 Request.Files【英文标题】:Request.Files in ASP.NET CORE 【发布时间】:2016-08-08 07:02:21 【问题描述】:我正在尝试使用 ajax 请求使用 aspnet 核心上传文件。 在以前的 .net 版本中,我曾经使用
来处理这个问题 foreach (string fileName in Request.Files)
HttpPostedFileBase file = Request.Files[fileName];
//Save file content goes here
fName = file.FileName;
(...)
但现在它在 request.files 处显示错误我怎样才能让它工作?我搜了一下发现httppostedfile已经改成了iformfile但是request.files怎么处理呢?
【问题讨论】:
看看这些链接***.com/questions/26443305/…和***.com/questions/29836342/mvc-6-httppostedfilebase尤其是这个答案***.com/a/27980038/5426333 感谢您的评论,我实际上发现IFormFile file in Request.Form.Files
现在我被困在获取参数值
Request.Form.Files[fileName]
?
【参考方案1】:
这是来自最近项目的工作代码。数据已从 Request.Files 移至 Request.Form.Files。 如果您需要将流转换为字节数组 - 这是唯一对我有用的实现。其他人会返回空数组。
using System.IO;
var filePath = Path.GetTempFileName();
foreach (var formFile in Request.Form.Files)
if (formFile.Length > 0)
using (var inputStream = new FileStream(filePath, FileMode.Create))
// read file to stream
await formFile.CopyToAsync(inputStream);
// stream to byte array
byte[] array = new byte[inputStream.Length];
inputStream.Seek(0, SeekOrigin.Begin);
inputStream.Read(array, 0, array.Length);
// get file name
string fName = formFile.FileName;
【讨论】:
【参考方案2】:我想到的两个好的解决方案如何合并:
var myBytes = await GetByteArrayFromImageAsync(Request.Form.Files[0]);
private async Task<byte[]> GetByteArrayFromImageAsync(IFormFile file)
using (var target = new MemoryStream())
await file.CopyToAsync(target);
return target.ToArray();
【讨论】:
【参考方案3】:对于使用常规格式或 ajax 上传的两个文件,此代码 100% 有效:
[HttpPost]
public async Task<IActionResult> Upload(IList<IFormFile> files)
foreach (IFormFile source in files)
string filename = ContentDispositionHeaderValue.Parse(source.ContentDisposition).FileName.Trim('"');
filename = this.EnsureCorrectFilename(filename);
using (FileStream output = System.IO.File.Create(this.GetPathAndFilename(filename)))
await source.CopyToAsync(output);
return this.RedirectToAction("Index");
private string EnsureCorrectFilename(string filename)
if (filename.Contains("\\"))
filename = filename.Substring(filename.LastIndexOf("\\") + 1);
return filename;
private string GetPathAndFilename(string filename)
return this.HostingEnvironment.WebRootPath + "\\files\\" + filename;
【讨论】:
以上是关于asp.net 中 request 与 context.request有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Asp.net中Request.Url的各个属性对应的意义介绍
ASP.NET 核心中的 Request.CreateResponse