Skip to content

Upgrade ServicePulse to .NET 10#2847

Closed
jasontaylordev wants to merge 4 commits intomasterfrom
upgrade/dotnet-10
Closed

Upgrade ServicePulse to .NET 10#2847
jasontaylordev wants to merge 4 commits intomasterfrom
upgrade/dotnet-10

Conversation

@jasontaylordev
Copy link
Contributor

Summary

Upgrades ServicePulse to .NET 10.

Changes

Target Framework Updates

  • ServicePulse → net10.0
  • ServicePulse.Tests → net10.0
  • Particular.PlatformSample.ServicePulse → net10.0

Dockerfile

  • SDK: mcr.microsoft.com/dotnet/sdk:10.0
  • Runtime: mcr.microsoft.com/dotnet/aspnet:10.0-noble-chiseled-composite

Breaking Changes Fixed

API .NET 8 .NET 10
IPNetwork type Microsoft.AspNetCore.HttpOverrides.IPNetwork System.Net.IPNetwork
Forwarded headers KnownNetworks KnownIPNetworks
Network prefix IPNetwork.Prefix IPNetwork.BaseAddress
Certificate loading new X509Certificate2(path) X509CertificateLoader.LoadCertificateFromFile(path)

Other

  • Fixed IDE0018 code style warning in ServicePulse.Host (unrelated, but required for build)

Testing

  • ✅ Solution builds successfully
  • ✅ Docker build succeeds
  • ✅ Container starts without errors
  • ✅ HTTP requests return 200 OK
  • ✅ All 76 unit tests pass

Notes

- Update ServicePulse, ServicePulse.Tests, and Particular.PlatformSample.ServicePulse to net10.0
- Update Dockerfile to use .NET 10 SDK and runtime images
- Update global.json to SDK 10.0.100
- Fix breaking changes:
  - IPNetwork: use System.Net.IPNetwork instead of Microsoft.AspNetCore.HttpOverrides.IPNetwork
  - ForwardedHeadersOptions: use KnownIPNetworks instead of KnownNetworks
  - IPNetwork.BaseAddress instead of IPNetwork.Prefix
  - X509CertificateLoader instead of X509Certificate2 constructor
- Fix IDE0018 code style warning in ServicePulse.Host
@johnsimons
Copy link
Member

I believe this effort is being completed as part of #2786

@johnsimons
Copy link
Member

I am also unsure why we need to keep the single project on net48?

@jasontaylordev
Copy link
Contributor Author

@mikeminutillo please review/approve or close if covered by #2786

@johnsimons
Copy link
Member

Or maybe the alternative is to just remove this host entirely once #2786 is merged 😉

@jasontaylordev
Copy link
Contributor Author

jasontaylordev commented Feb 26, 2026

I am also unsure why we need to keep the single project on net48?

ServicePulse.Host is the Windows-only self-hosted version that uses OWIN/Katana for hosting. Upgrading it from net48 would require investigating whether those OWIN dependencies have .NET 10+ equivalents, potentially rearchitecting the hosting approach, and additional testing for Windows Service scenarios.

That felt like yak shaving territory for this PR - the goal here was to fix the Docker MVID mismatch issue by way of an upgrade to .NET 10. Keeping focused on smaller steps means we can get this fix merged and working, then tackle the ServicePulse.Host modernization as a separate, deliberate effort if/when needed. See also #2159.

@mikeminutillo
Copy link
Member

@mikeminutillo please review/approve or close if covered by #2786

@jasontaylordev Every change represented here is also in #2786

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.

3 participants