본문 바로가기

DevelopNote/오류 모음

[Error - c# ] CompnentModel error

 

 

>>System.ComponentModel.DataAnnotations ] System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3

 

문제 해결

📌 [상황]

    Required]
        [DataType(DataType.EmailAddress)]
        public string UserId { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

유효성 처리를 위한 System.ComponentModel.DataAnnotations 사용 / IHttpActionResult로 Get 요청 시 오류 발생

 

📌 [오류 메시지]

```

{
    "Message": "오류가 발생했습니다.",
    "ExceptionMessage": "'ObjectContent`1' 유형에서 콘텐츠 형식 'application/json; charset=utf-8'의 응답 본문을 직렬화하지 못했습니다.",
    "ExceptionType": "System.InvalidOperationException",
    "StackTrace": null,
    "InnerException": {
        "Message": "오류가 발생했습니다.",
        "ExceptionMessage": "콘텐츠를 스트림으로 복사하는 동안 오류가 발생했습니다.",
        "ExceptionType": "System.Net.Http.HttpRequestException",
        "StackTrace": "   위치: System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   위치: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   위치: System.Web.Http.WebHost.HttpControllerHandler.<WriteBufferedResponseContentAsync>d__22.MoveNext()",
        "InnerException": {
            "Message": "오류가 발생했습니다.",
            "ExceptionMessage": "파일이나 어셈블리 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. (예외가 발생한 HRESULT: 0x80131040)",
            "ExceptionType": "System.IO.FileLoadException",
            "StackTrace": "   위치: System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)\r\n   위치: System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)\r\n   위치: System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)\r\n   위치: System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)\r\n   위치: System.Reflection.CustomAttribute.IsCustomAttributeDefined(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Int32 attributeCtorToken, Boolean mustBeInheritable)\r\n   위치: System.Reflection.CustomAttribute.IsDefined(RuntimePropertyInfo property, RuntimeType caType)\r\n   위치: Newtonsoft.Json.Serialization.DefaultContractResolver.GetSerializableMembers(Type objectType)\r\n   위치: Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperties(Type type, MemberSerialization memberSerialization)\r\n   위치: Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(Type objectType)\r\n   위치: Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(Type objectType)\r\n   위치: System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)\r\n   위치: Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(Type type)\r\n   위치: Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)\r\n   위치: Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)\r\n   위치: System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding)\r\n   위치: System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding)\r\n   위치: System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken)"
        }
    }
}

 

 

📌 [원인]

📌 [해결 방법]

System.ComponentModel.DataAnnotations 버전을 5.0.0 → 4.4.1으로 낮춰서 처리함.

300x250