{"record":{"id":"477307bbd2569689","repo":"dotnet/machinelearning","slug":"no-onnx-session-options","errorCode":null,"errorMessage":"No Onnx Session Options","messagePattern":"No Onnx Session Options","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.ML.OnnxTransformer/OnnxSessionOptions.cs","lineNumber":26,"sourceCode":"using Microsoft.ML.Data;\nusing Microsoft.ML.OnnxRuntime;\nusing Microsoft.ML.Runtime;\nusing Microsoft.ML.Transforms.Onnx;\n\nnamespace Microsoft.ML.Transforms.Onnx\n{\n    public static class OnnxSessionOptionsExtensions\n    {\n        private const string OnnxSessionOptionsName = \"OnnxSessionOptions\";\n\n        public static OnnxSessionOptions GetOnnxSessionOption(this IHostEnvironment env)\n        {\n            if (env is IHostEnvironmentInternal localEnvironment)\n            {\n                return localEnvironment.GetOptionOrDefault<OnnxSessionOptions>(OnnxSessionOptionsName);\n            }\n\n            throw new ArgumentException(\"No Onnx Session Options\");\n        }\n\n        public static void SetOnnxSessionOption(this IHostEnvironment env, OnnxSessionOptions onnxSessionOptions)\n        {\n            if (env is IHostEnvironmentInternal localEnvironment)\n            {\n                localEnvironment.SetOption(OnnxSessionOptionsName, onnxSessionOptions);\n            }\n            else\n                throw new ArgumentException(\"No Onnx Session Options\");\n        }\n    }\n\n    public sealed class OnnxSessionOptions\n    {\n        internal void CopyTo(SessionOptions sessionOptions)\n        {\n            sessionOptions.EnableMemoryPattern = EnableMemoryPattern;","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/dotnet/machinelearning/blob/7b76e69cf964daeca3f1377af6bc5543284d56c6/src/Microsoft.ML.OnnxTransformer/OnnxSessionOptions.cs#L8-L44","documentation":"GetOnnxSessionOption retrieves registered OnnxSessionOptions from the environment, but only if the IHostEnvironment implements IHostEnvironmentInternal. Otherwise it throws ArgumentException 'No Onnx Session Options'.","triggerScenarios":"Calling env.GetOnnxSessionOption() on an IHostEnvironment that is not IHostEnvironmentInternal, or on an internal environment where no OnnxSessionOptions were registered via SetOnnxSessionOption (GetOptionOrDefault returning null path still requires the internal interface; the throw occurs when the cast fails).","commonSituations":"Using a mock or custom IHostEnvironment in tests that doesn't implement IHostEnvironmentInternal; calling before SetOnnxSessionOption was invoked on that environment.","solutions":["Call SetOnnxSessionOption on the environment before reading options","Use a real ML.NET host environment (MLContext-based) that implements IHostEnvironmentInternal","Fix test doubles to implement IHostEnvironmentInternal","Catch ArgumentException and use default session options"],"exampleFix":"// before\nvar opts = env.GetOnnxSessionOption(); // env is plain IHostEnvironment mock\n// after\nif (env is IHostEnvironmentInternal)\n    var opts = env.GetOnnxSessionOption();\nelse\n    var opts = new OnnxSessionOptions(); // defaults","handlingStrategy":"type-guard","validationCode":"if (env is IHostEnvironmentInternal internalEnv)\n{\n    internalEnv.SetOnnxSessionOption(new OnnxSessionOptions());\n}\nvar opts = env is IHostEnvironmentInternal ? env.GetOnnxSessionOption() : new OnnxSessionOptions();","typeGuard":"bool HasOnnxOptions(IHostEnvironment env) => env is IHostEnvironmentInternal;","tryCatchPattern":"try { var o = env.GetOnnxSessionOption(); } catch (ArgumentException ex) when (ex.Message.Contains(\"No Onnx Session Options\")) { var o = new OnnxSessionOptions(); }","preventionTips":["Use standard ML.NET hosts (MLContext) rather than custom IHostEnvironment fakes","Always call SetOnnxSessionOption before GetOnnxSessionOption","Keep Microsoft.ML/ONNX package versions aligned"],"tags":["csharp","onnx","environment","config"],"backgroundTag":"missing-required-config","analyzedSha":"7b76e69cf964daeca3f1377af6bc5543284d56c6","analyzedAt":"2026-09-11T12:35:38.930Z","contentChangedAt":"2026-09-11T12:35:38.930Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}