IHostingEnvironment.IsDevelopment () понижает ограничение размера запроса - PullRequest
0 голосов
/ 01 мая 2019

У меня возникла проблема, когда при использовании вызова метода 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...