Я работаю над службой, которая получит файл, используя HTTP Content-Type: application / octet-stream и Transfer-Encoding: chunked.
Мне удалось заставить сервер получить запрос DisableFormValueModelBinding и RequestSizeLimit .
Но когда я иду, чтобы получить данные из запроса. Длина тела всегда равна 0.
В Framework я бы использовал что-то вроде request.Content.ReadAsStreamAsync ();Но, похоже, это не вариант для Core.
Как я могу получить содержимое потока, исходящего от клиента (Почтальон)?
Используя Почтальон, я попробовал двоичный файл иопции данных формы для тела, но ни у одного из них не было тела после того, как оно достигло сервера.При чтении некоторой документации были предложения по созданию нового форматера, который использовал MultipartReader.Но все это выглядело как наличие содержимого типа multipart / form-data, которое я не использую.Я также пытался использовать curl для отправки запроса, но результаты были такими же.
Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
}
Контроллер
[HttpPost]
[RequestSizeLimit(2147483648)] // https://stackoverflow.com/questions/43305220/form-key-or-value-length-limit-2048-exceeded
[DisableFormValueModelBinding] // https://dotnetcoretutorials.com/2017/03/12/uploading-files-asp-net-core/
public void Upload()
{
Request.EnableRewind();
Stream body = Request.Body;
Debug.WriteLine(body.Length);
}