.NET API
TraconSessionOwnerRequiredException
Tracon.Abstractions.dllThrown when session ownership is on, a session write needs an owner, and no authenticated identity could be resolved to be that owner.
public sealed class TraconSessionOwnerRequiredException : TraconException, ISerializable- Inheritance
- object ← Exception ← TraconException ← TraconSessionOwnerRequiredException
- Implements
- ISerializable
- Inherited Members
- TraconException.ErrorType, Exception.GetBaseException(), Exception.ToString(), Exception.GetType(), Exception.TargetSite, Exception.Message, Exception.Data, Exception.InnerException, Exception.HelpLink, Exception.Source, Exception.HResult, Exception.StackTrace, object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Remarks
Section titled “Remarks”Fail-closed. With TraconSessionOwnershipOptions.Enabled on and TraconSessionOwnershipOptions.RequireAuthenticatedOwner left at its default, a session is never OPENED without an owner: an ownerless row would be invisible to every owner-filtered listing from that moment on, so the caller would have written a session they can never read back. Rejecting the write is the honest answer; writing the row and hiding it is not.
This is the one place where attribution stops being bookkeeping. IRunAttributionContext promises that its own failure never stops a run — an unresolved user costs a NULL column and nothing else. With ownership on, the SAME value becomes an authorization input, and its absence rejects the write instead. Same service, two contract strengths; the option is what moves between them.
Over HTTP this surfaces as 403, not 500: it is a policy
decision the deployment asked for, not a fault. It is also not 401 —
the caller may be perfectly well authenticated for the endpoint’s own role
policy and still carry no identity the attribution pipeline can name.
Constructors
Section titled “Constructors”TraconSessionOwnerRequiredException()
Section titled “ TraconSessionOwnerRequiredException()”Creates a new error.
public TraconSessionOwnerRequiredException()TraconSessionOwnerRequiredException(string)
Section titled “ TraconSessionOwnerRequiredException(string)”Creates a new error.
public TraconSessionOwnerRequiredException(string message)Parameters
Section titled “Parameters”message string
The error message.
TraconSessionOwnerRequiredException(string, Exception)
Section titled “ TraconSessionOwnerRequiredException(string, Exception)”Creates a new error.
public TraconSessionOwnerRequiredException(string message, Exception innerException)Parameters
Section titled “Parameters”message string
The error message.
innerException Exception
The underlying error.
Fields
Section titled “Fields”SessionOwnerRequiredErrorType
Section titled “ SessionOwnerRequiredErrorType”The stable value written to TraconException.ErrorType.
public const string SessionOwnerRequiredErrorType = "session_owner_required"Field Value
Section titled “Field Value”Properties
Section titled “Properties”ErrorType
Section titled “ ErrorType”Gets the stable error type name written to the run record.
public override string ErrorType { get; }Property Value
Section titled “Property Value”Remarks
Section titled “Remarks”Defaults to the full name of the exception type, so today’s behaviour does
not change. A derived type overrides this member when the record has to be
machine readable — for example TraconContentFilteredException
writes content_filtered. Reports and alert rules can rely on this
stable name instead of an assembly name.
The value is written to RunError.Type and carries no secret.
SessionId
Section titled “ SessionId”Gets the id of the session that could not be given an owner.
public string? SessionId { get; init; }