Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Cannot upload media after upgrade, exception in RespectFileSizeLimitConfigurationAttribute

Vote:
0

Hi!

After upgrade to CMS 12 and using Windows Authentication we cannot longer upload even the smallest of picture, the exception below occurs;

Exception: 
System.InvalidOperationException: The maximum request body size cannot be modified after the app has already started reading from the request body.
   at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.set_MaxRequestBodySize(Nullable`1 value)
   at EPiServer.Cms.Shell.UI.Attributes.RespectFileSizeLimitConfigurationAttribute.OnAuthorization(AuthorizationFilterContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at ElmahCore.Mvc.ErrorLogMiddleware.InvokeAsync(HttpContext context)
   at ElmahCore.Mvc.ErrorLogMiddleware.InvokeAsync(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.ResponseCaching.ResponseCachingMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Found this in the console:

The store was queried with a [string] but the entity id is a [undefined]

If found this so it looks like Optimizely is setting the size if there is a UploadOption

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public class RespectFileSizeLimitConfigurationAttribute : Attribute, IAuthorizationFilter, IFilterMetadata, IOrderedFilter
    {
        public int Order { get; set; } = 899;

        public void OnAuthorization(AuthorizationFilterContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            UploadOptions service = context.HttpContext.RequestServices.GetService<UploadOptions>();
            if (service != null)
            {
                context.HttpContext.Features.Get<IHttpMaxRequestBodySizeFeature>()!.MaxRequestBodySize = service.FileSizeLimit;
            }
        }
    }

A bug maybe?

Any ideas why this occours?

Thanks!

/Kristoffer

#290720
Edited, Oct 28, 2022 9:49
Vote:
0

Let me forward this to the CMS UI team 

#290843
Oct 31, 2022 12:01
Vote:
0

Can you please contact support for a ticket? 

#290844
Oct 31, 2022 12:19
Vote:
0

@Quan, I have a support ticket. #1012199. I'm not sure if they tested on IIS or not.

We have a SqlBlobProvider but I have tested without it, using Optimizely standard, and still I can not upload the smallest of files. It is so strange.

Thanks! 

/Kristoffer

#290845
Oct 31, 2022 12:46
Vote:
0

Hi!

We use Elmah for error handling and if I don't use Elmah, it works just fine.

This is the package:
https://www.nuget.org/packages/ElmahCore

I will start to investigate what could be the problem.

Thanks!

/Kristoffer

#290852
Oct 31, 2022 14:36
Vote:
0

Adding the:

app.UseElmah();

at the end of the Configure method fixes the issue.

/Kristoffer

#295729
Feb 01, 2023 14:54
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.