0
포털 응용 프로그램에서 내 WCF 메서드를 호출합니다.매개 변수 http://tempuri.org/ : 예외를 직렬화하는 동안 오류가 발생했습니다. C#에서
[ServiceContract]
public interface ILogging
{
[OperationContract]
[ServiceKnownType(typeof(ErrorExceptionInformation))]
void LogException(ErrorExceptionInformation exception);
}
public class Logging : ILogging
{
public void LogException(ErrorExceptionInformation exception)
{
LogProviderManager.Default.WriteLog(exception.Application, exception.Exception, true, exception.Category);
}
}
[DataContract]
public class ErrorExceptionInformation
{
[DataMember]
public string Application { get; set; }
[DataMember]
public Exception Exception { get; set; }
[DataMember]
public string Category { get; set; }
}
를이 내가 포털 응용 프로그램에서 호출하는 방법은 다음과 같습니다 : DataContractResolver 경우 사용을 고려 :
ErrorExceptionInformation information = new ErrorExceptionInformation
{
Exception = errorToLog,
Application = Models.Constants.ErrorLog.ErrorLocation,
Category = Models.Constants.ErrorLog.AdminPortalEnvironmentName
};
new LoggingClient().LogException(information);
그러나 나는 다음과 같은 오류가 점점 계속 다음과 같이
내 WCF 설정입니다 DataContractSerializer를 사용하거나 알려진 유형 목록에 정적으로 알려지지 않은 유형을 추가합니다. 예를 들어 KnownTypeAttribute 속성을 사용하거나 serializer에 전달 된 알려진 유형 목록에 추가합니다. ' 자세한 내용은 InnerException을 참조하십시오.
[ServiceContract]
public interface ILogging
{
[OperationContract]
[ServiceKnownType("GetKnownTypes", typeof(KnownTypeHelper))] // << -- change this
void LogException(ErrorExceptionInformation exception);
}
static class KnownTypeHelper
{
public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
{
System.Collections.Generic.List<System.Type> knownTypes =
new System.Collections.Generic.List<System.Type>();
knownTypes.Add(typeof(ErrorExceptionInformation));
// knownTypes.Add(typeof(... any others....));
return knownTypes;
}
}
Update
을 OR 대신에 동작 계약의 인터페이스의 속성을 넣어 :
내가 relly을 받고 있지 않다 (ServiceKnownType (typeof (ErrorExceptionInformation))을 사용하는 것과 동일 함) –
내가 생각하기에이 방법을 사용하는 이유는 나에게 같은 오류가 발생하기 때문입니다. – Crowcoder
@babuji 이렇게하면 더 자세히 살펴볼 것입니다. 속성을 사용하면 인터페이스가 작동 계약이 아니라 인터페이스로 이동합니다. – Crowcoder