OPCFoundation / UA-.NETStandard

OPC Unified Architecture .NET Standard
Other
1.97k stars 950 forks source link

Using Uri.TryCreate causes regression with namespace uri that use mixed lower/uppercase letters in the <hostname> of the Uri. #2837

Closed KircMax closed 2 weeks ago

KircMax commented 2 weeks ago

Proposed changes

Describe the changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. The EscapeUri method of the Utils must not change the letters within the Uri which would happen when using the Uri.TryCreate method. This will then lead to the NodeId actually having the URI "https://ABC" being changed to "https://abc" and later when having a complex type write being "not found" when using ExpandedNodeId.ToNodeId(); (returns null) image since it is null the BinaryEncoder will throw an Exception that it wasnt found in the namespacetable and therefore the write fails. image

Related Issues

Types of changes

What types of changes does your code introduce? Put an x in the boxes that apply. You can also fill these out after creating the PR.

Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

Further comments

If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...