У меня возникла проблема, когда при использовании вызова метода IHostingEnvironment.IsDevelopment () веб-сервер возвращает 413.Когда я удаляю этот вызов, мой метод работает с тем же запросом.
Я не уверен, что он каким-то образом понижает ограничение DefaultRequestSize до 30 МБ https://github.com/aspnet/Announcements/issues/267
или происходит что-то еще, о чем я не знаю.
Я решил эту проблему, удалив вызов IHostingEnviornment.IsDevelopment () из метода ConfigureServices (IServiceCollection) в моем классе запуска, переместив свою конфигурацию настраиваемой службы в
ConfigureProductionServices (IServiceCollection) и ConfigureDevelopmentServices (IService) IService1010 *
и удаление вызова IHostingEnvironment.ISDevelopment (), но я хочу знать, что не так с вышеуказанным методом, поскольку он должен поддерживаться.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2
Я настроил свой конструктор автозагрузки для получения следующего ввода
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
// whatever else need to be coded for startup
HostingEnvironment = env;
}
, где я вызываю переменную env в моем методе ConfigureSerivces
public void ConfigureServices(IServiceCollection services)
{
if (HostingEnvironment.IsDevelopment())
{
//Dev services added
}
else
{
// Prod services added
}
}
Приведенная выше конфигурация конфигурации как-то заставляет 413 возвращаться с моих вызовов web api, когда они раньше работали.
Я обошел проблему с помощью следующих методов кода
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
// whatever else need to be coded for startup
HostingEnvironment = env;
}
public void ConfigureDevelopmentServices(IServiceCollection services)
{
// Add Dev Services
StartupConfigureServices(services);
}
public void ConfigureProductionServices(IServiceCollection services)
{
// Add Prod Services
StartupConfigureServices(services);
}
, но я не могу избавиться от ощущения, что это однажды вернется, чтобы укусить меня однажды.
Я также могу использовать атрибут follow в моем методе контроллера, чтобы также исправить эту проблему
[DisableRequestSizeLimit]
, но его по какой-то причине необходимо разместить над атрибутом Route.У меня нет желания использовать это исправление, поскольку я чувствую, что оно довольно небезопасно, и я все еще не знаю, что происходит.
Я поместил следующую строку кода в один контроллер и отладил приложение с обоими проектами запуска, но я все еще получаю нулевое значение для обоих проектов в моем вызове метода контроллера.
var test = HttpContext.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize;