{"record":{"id":"2b76f4560e39c0b2","repo":"microsoft/semantic-kernel","slug":"the-address-address-for-the-operation-name","errorCode":null,"errorMessage":"The address '{address}' for the '{operation.Name}' gRPC operation is not a valid absolute URI.","messagePattern":"The address '(.+?)' for the '(.+?)' gRPC operation is not a valid absolute URI\\.","errorType":"exception","errorClass":"KernelException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Functions/Functions.Grpc/GrpcOperationRunner.cs","lineNumber":179,"sourceCode":"        string? address;\n\n        if (this._addressOverride is not null)\n        {\n            address = this._addressOverride.AbsoluteUri;\n        }\n        else\n        {\n            address = operation.Address;\n        }\n\n        if (string.IsNullOrEmpty(address))\n        {\n            throw new KernelException($\"No address provided for the '{operation.Name}' gRPC operation.\");\n        }\n\n        if (!Uri.TryCreate(address, UriKind.Absolute, out var addressUri))\n        {\n            throw new KernelException($\"The address '{address}' for the '{operation.Name}' gRPC operation is not a valid absolute URI.\");\n        }\n\n        // Validate scheme\n        if (!this._allowedSchemes.Contains(addressUri.Scheme, StringComparer.OrdinalIgnoreCase))\n        {\n            throw new KernelException($\"The URI scheme '{addressUri.Scheme}' is not allowed for the '{operation.Name}' gRPC operation. Allowed schemes: {string.Join(\", \", this._allowedSchemes)}.\");\n        }\n\n        // Validate against allowed addresses\n        if (this._allowedAddresses is { Count: > 0 })\n        {\n            bool isAllowed = false;\n            foreach (var allowedAddress in this._allowedAddresses)\n            {\n                string allowedUri = allowedAddress.AbsoluteUri;\n\n                if (addressUri.AbsoluteUri.StartsWith(allowedUri, StringComparison.OrdinalIgnoreCase))\n                {","sourceCodeStart":161,"sourceCodeEnd":197,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Functions/Functions.Grpc/GrpcOperationRunner.cs#L161-L197","documentation":"Thrown after the address is non-empty but `Uri.TryCreate(address, UriKind.Absolute, ...)` fails, meaning the string is not a syntactically valid absolute URI. Relative paths, scheme-less strings, or malformed URLs all trigger this.","triggerScenarios":"Address string like `localhost:5001`, `//service`, `/api`, or containing illegal characters that cannot be parsed as an absolute Uri.","commonSituations":"Omitting the scheme (`https://`); a typo; a templated placeholder that was never substituted; trailing/leading whitespace.","solutions":["Prefix the address with a scheme, e.g. `https://localhost:5001`.","Trim whitespace and validate with Uri.TryCreate yourself before registering.","Use a Uri instance for AddressOverride rather than a raw string."],"exampleFix":"// before\naddress = \"localhost:5001\";\n// after\naddress = \"https://localhost:5001\";","handlingStrategy":"validation","validationCode":"if (!Uri.TryCreate(address, UriKind.Absolute, out _))\n    throw new InvalidOperationException($\"Address is not an absolute URI: {address}\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Prefer passing Uri objects for AddressOverride.","Always include the scheme in address strings."],"tags":["grpc","network","uri","configuration"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}