Skip to content

issue-468: Fix empty/whitespace string converting to array type#469

Merged
nblumhardt merged 3 commits into
serilog:devfrom
gyurebalint-CID:fix/issue-468
Apr 9, 2026
Merged

issue-468: Fix empty/whitespace string converting to array type#469
nblumhardt merged 3 commits into
serilog:devfrom
gyurebalint-CID:fix/issue-468

Conversation

@gyurebalint-CID

Copy link
Copy Markdown
Contributor

Fixes #468

Problem

When a configuration value is an empty or whitespace-only string and the target type is an array (e.g. string[]), StringArgumentValue.ConvertTo falls through to parsing logic that produces unexpected results instead of returning an empty array.

Changes

StringArgumentValue.cs

  • Changed string.IsNullOrEmpty to string.IsNullOrWhiteSpace in the array-type guard, so that empty ("") and whitespace-only (" ") values both return an empty array.

StringArgumentValueTests.cs

Why IsNullOrWhiteSpace over IsNullOrEmpty?

A whitespace-only string like " " is not meaningful array content. Without this, it would fall through and produce an array containing a whitespace string — a subtle bug. No one intentionally configures " " as valid array input; if structured values are needed, JSON arrays should be used instead.

@gyurebalint

Copy link
Copy Markdown
Contributor

Hello everyone.
I think CI/CD needs approval for it to run.
If you have any comments, changes in mind, let me know and I'll adopt them.
Along with my other PR on a similar issue in this repo.
This is my private account, this PR was created with my work one.

@nblumhardt

Copy link
Copy Markdown
Member

Thanks @gyurebalint-CID 👍

@nblumhardt nblumhardt merged commit 955b652 into serilog:dev Apr 9, 2026
1 check passed
@nblumhardt nblumhardt mentioned this pull request Apr 30, 2026
This was referenced Jun 15, 2026
SonnyRR pushed a commit to SonnyRR/stacked-deck-templates that referenced this pull request Jun 15, 2026
Updated
[Serilog.Settings.Configuration](https://github.com/serilog/serilog-settings-configuration)
from 10.0.0 to 10.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [Serilog.Settings.Configuration's
releases](https://github.com/serilog/serilog-settings-configuration/releases)._

## 10.0.1

## What's Changed
* Support LevelAlias names in configuration parsing by @​mohammed-saalim
in serilog/serilog-settings-configuration#465
* Fix: Update ConditionalSink expression syntax in sample app by
@​gyurebalint in
serilog/serilog-settings-configuration#470
* issue-468: Fix empty/whitespace string converting to array type by
@​gyurebalint-CID in
serilog/serilog-settings-configuration#469
* Add WriteTo.FallbackChain and WriteTo.Fallible support in
configuration by @​ArieGato in
serilog/serilog-settings-configuration#474
* Fix/issue 441 by @​gyurebalint in
serilog/serilog-settings-configuration#471
* Support C# 13 params collections (IEnumerable<T>, List<T>) by
@​gyurebalint in
serilog/serilog-settings-configuration#478

## New Contributors
* @​mohammed-saalim made their first contribution in
serilog/serilog-settings-configuration#465
* @​gyurebalint made their first contribution in
serilog/serilog-settings-configuration#470
* @​gyurebalint-CID made their first contribution in
serilog/serilog-settings-configuration#469
* @​ArieGato made their first contribution in
serilog/serilog-settings-configuration#474

**Full Changelog**:
serilog/serilog-settings-configuration@v10.0.0...v10.0.1

Commits viewable in [compare
view](serilog/serilog-settings-configuration@v10.0.0...v10.0.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Serilog.Settings.Configuration&package-manager=nuget&previous-version=10.0.0&new-version=10.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

InvalidCastException when enricher Args contains empty JSON array for params string[] parameter (regression in .NET 10)

3 participants