为什么asp.net核心代码中Request.Headers.Range无法正常运行?

2026-03-30 11:281阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计411个文字,预计阅读时间需要2分钟。

为什么asp.net核心代码中Request.Headers.Range无法正常运行?

csharp获取 RangeHeaderValue 在 ASP.NET 核心中是否支持:在 ASP.NET 核心中,直接获取 RangeHeaderValue 可能不是直接支持的功能。但是,可以通过使用自定义中间件或者处理请求头来间接实现这一功能。

以下是一个简单的示例,展示如何在 ASP.NET Core 中通过中间件来处理 RangeHeaderValue:

为什么asp.net核心代码中Request.Headers.Range无法正常运行?

csharppublic class RangeHeaderMiddleware{ private readonly RequestDelegate _next;

public RangeHeaderMiddleware(RequestDelegate next) { _next=next; }

public async Task InvokeAsync(HttpContext context) { if (context.Request.Headers.ContainsKey(Range)) { var rangeHeader=context.Request.Headers[Range].ToString(); // 在这里处理 rangeHeader,例如存储或转换成 RangeHeaderValue }

await _next(context); }}

// 在 Startup.cs 中注册中间件public void ConfigureServices(IServiceCollection services){ services.AddControllers(); // ...}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }

app.UseRouting();

// 注册中间件 app.UseMiddleware();

app.UseEndpoints(endpoints=> { endpoints.MapControllers(); });}

这段代码中,`RangeHeaderMiddleware` 类通过中间件的形式来处理请求头中的 `Range`。在 `Configure` 方法中,你需要注册这个中间件,使其在请求处理过程中生效。

请注意,这只是一个基础的示例,实际应用中可能需要根据具体需求进行调整。

RangeHeaderValue rangeHeader = base.Request.Headers.Range;

上面的代码正在使用asp.net web api,但它不适用于asp.net核心.获取RangeHeaderValue在asp.net核心中是否有altnative?

ASP.NET Core 1.0( github.com/aspnet/Mvc/issues/3702)不支持范围请求.因此,需要一些用于处理范围请求的自己的代码.为了获得上述问题中的Range-Header,给出了提示,您可以导入Microsoft.AspNet.Http.Extensions包并使用httpContext.Request.GetTypedHeaders().

本文共计411个文字,预计阅读时间需要2分钟。

为什么asp.net核心代码中Request.Headers.Range无法正常运行?

csharp获取 RangeHeaderValue 在 ASP.NET 核心中是否支持:在 ASP.NET 核心中,直接获取 RangeHeaderValue 可能不是直接支持的功能。但是,可以通过使用自定义中间件或者处理请求头来间接实现这一功能。

以下是一个简单的示例,展示如何在 ASP.NET Core 中通过中间件来处理 RangeHeaderValue:

为什么asp.net核心代码中Request.Headers.Range无法正常运行?

csharppublic class RangeHeaderMiddleware{ private readonly RequestDelegate _next;

public RangeHeaderMiddleware(RequestDelegate next) { _next=next; }

public async Task InvokeAsync(HttpContext context) { if (context.Request.Headers.ContainsKey(Range)) { var rangeHeader=context.Request.Headers[Range].ToString(); // 在这里处理 rangeHeader,例如存储或转换成 RangeHeaderValue }

await _next(context); }}

// 在 Startup.cs 中注册中间件public void ConfigureServices(IServiceCollection services){ services.AddControllers(); // ...}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }

app.UseRouting();

// 注册中间件 app.UseMiddleware();

app.UseEndpoints(endpoints=> { endpoints.MapControllers(); });}

这段代码中,`RangeHeaderMiddleware` 类通过中间件的形式来处理请求头中的 `Range`。在 `Configure` 方法中,你需要注册这个中间件,使其在请求处理过程中生效。

请注意,这只是一个基础的示例,实际应用中可能需要根据具体需求进行调整。

RangeHeaderValue rangeHeader = base.Request.Headers.Range;

上面的代码正在使用asp.net web api,但它不适用于asp.net核心.获取RangeHeaderValue在asp.net核心中是否有altnative?

ASP.NET Core 1.0( github.com/aspnet/Mvc/issues/3702)不支持范围请求.因此,需要一些用于处理范围请求的自己的代码.为了获得上述问题中的Range-Header,给出了提示,您可以导入Microsoft.AspNet.Http.Extensions包并使用httpContext.Request.GetTypedHeaders().