diff --git a/Stack/Opc.Ua.Types/Utils/ServiceResult.cs b/Stack/Opc.Ua.Types/Utils/ServiceResult.cs
index ea0f8001f..806540095 100644
--- a/Stack/Opc.Ua.Types/Utils/ServiceResult.cs
+++ b/Stack/Opc.Ua.Types/Utils/ServiceResult.cs
@@ -43,6 +43,15 @@ namespace Opc.Ua
[DataContract(Namespace = Namespaces.OpcUaXsd)]
public class ServiceResult
{
+ ///
+ /// Get according ServiceResultException for ServiceResult
+ ///
+ /// ServiceResultException
+ public ServiceResultException GetServiceResultException()
+ {
+ return new ServiceResultException(this);
+ }
+
///
/// Constructs an object by specifying each property.
///
diff --git a/Stack/Opc.Ua.Types/Utils/ServiceResultException.cs b/Stack/Opc.Ua.Types/Utils/ServiceResultException.cs
index edb0d7312..138caba5c 100644
--- a/Stack/Opc.Ua.Types/Utils/ServiceResultException.cs
+++ b/Stack/Opc.Ua.Types/Utils/ServiceResultException.cs
@@ -115,7 +115,7 @@ public ServiceResultException(StatusCode statusCode, string message, Exception e
/// Initializes the exception with a Result object.
///
public ServiceResultException(ServiceResult status)
- : base(GetMessage(status))
+ : base(GetMessage(status), status.InnerResult != null ? status.InnerResult.GetServiceResultException() : null)
{
Result = status ?? ServiceResult.Bad;
}