Upgraded to 7.4.x - can't save document/media types
Our application has been sitting on Umbraco 7.3.7 for a while now and we've decided to finally upgrade it to the most recent version. First, I've upgraded to 7.4.3, however, there was an issue with saving doc and media types. I've rerolled all the changes and tried to do it step by step by upgrading to 7.4.0 and then progressing with each version upgrade one by one. Unfortunately, upgrading to 7.4.0 has already introduced the issue again.
Basically, when saving any doc/media type, I get a 500 response from the server. Every time with the same message:
An error occured
Property 'DataTypeId' on type 'Umbraco.Web.Models.ContentEditing.PropertyTypeBasic' is invalid. Value-typed properties marked as [Required] must also be marked with [DataMember(IsRequired=true)] to be recognized as required. Consider attributing the declaring type with [DataContract] and the property with [DataMember(IsRequired=true)].
EXCEPTION DETAILS
System.InvalidOperationException: Property 'DataTypeId' on type 'Umbraco.Web.Models.ContentEditing.PropertyTypeBasic' is invalid. Value-typed properties marked as [Required] must also be marked with [DataMember(IsRequired=true)] to be recognized as required. Consider attributing the declaring type with [DataContract] and the property with [DataMember(IsRequired=true)].
[DEFAULTDIALOGS_STACKTRACE]
at System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata metadata, Object container)
at System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateElements(IEnumerable model, ValidationContext validationContext)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateElements(IEnumerable model, ValidationContext validationContext)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators)
at System.Web.Http.Validation.DefaultBodyModelValidator.Validate(Object model, Type type, ModelMetadataProvider metadataProvider, HttpActionContext actionContext, String keyPrefix)
at Umbraco.Web.WebApi.PrefixlessBodyModelValidator.Validate(Object model, Type type, ModelMetadataProvider metadataProvider, HttpActionContext actionContext, String keyPrefix)
at System.Web.Http.ModelBinding.FormatterParameterBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at System.Web.Http.Controllers.HttpActionBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()
Attempted to fix it on my own, but it seems like a problem with something in Umbraco rather than the application itself. Any help would be appreciated.
EDIT: I can save Doc Types, when they have no properties. However, if I add even one property, I get this error. The property can be of virtually any data type, doesn't matter if it's a one from a plugin or a generic, Umbraco one.
The problem was an obsolete registration of InvalidModelValidatorProvider, which deems the PropertyTypeBasic invalid because of the lack of [DataMember(IsRequired = true)] attribute on a few of its properties (it requires that attribute, when you use the [Required] attribute, which was added in 7.4).
Upgraded to 7.4.x - can't save document/media types
Our application has been sitting on Umbraco 7.3.7 for a while now and we've decided to finally upgrade it to the most recent version. First, I've upgraded to 7.4.3, however, there was an issue with saving doc and media types. I've rerolled all the changes and tried to do it step by step by upgrading to 7.4.0 and then progressing with each version upgrade one by one. Unfortunately, upgrading to 7.4.0 has already introduced the issue again.
Basically, when saving any doc/media type, I get a 500 response from the server. Every time with the same message:
Attempted to fix it on my own, but it seems like a problem with something in Umbraco rather than the application itself. Any help would be appreciated.
EDIT: I can save Doc Types, when they have no properties. However, if I add even one property, I get this error. The property can be of virtually any data type, doesn't matter if it's a one from a plugin or a generic, Umbraco one.
Bartosz
Have you reverted all changes from config file and dlls
Manish
Hey,
I've reverted all the changes to solution specific parts of code, while preserving the changes resulting from the upgrade of Umbraco itself.
Regards, Bartek
The problem was an obsolete registration of InvalidModelValidatorProvider, which deems the PropertyTypeBasic invalid because of the lack of [DataMember(IsRequired = true)] attribute on a few of its properties (it requires that attribute, when you use the [Required] attribute, which was added in 7.4).
is working on a reply...