This change enhances our ambient value logic to also deal with required values. In 2.2 we introduced a 'required values' semantic to allow route values to appear "to the left" of a route pattern for the purpose of ambient values copying. This is a complicated way of saying "when you like to a different endpoint then discard the ambient values". What we didn't consider is that some ambient values are special (like area). So basically, we'll allow an ambient value to be used if it's part of the required values - even if we've already decided to discard the ambient values. This is a pretty surgical fix and only affected the desired scenario based on tests. ----- I also removed an optimization that I think is broken. I put an earlier optimization in place that attempted to count ambient values as they were "seen" to try and avoid some extra copying. This copying loop has a cost even if it no-ops which is what I was trying to prevent. Unfortunately since we added 'required values' - it's now possible for an ambient value to be double-counted, which makes this optimization incorrect. |
||
|---|---|---|
| .. | ||
| Antiforgery | ||
| Azure | ||
| Components | ||
| DataProtection | ||
| DefaultBuilder | ||
| Features/JsonPatch | ||
| Framework | ||
| Hosting | ||
| Html/Abstractions | ||
| Http | ||
| Identity | ||
| Installers | ||
| Middleware | ||
| MusicStore | ||
| Mvc | ||
| ProjectTemplates | ||
| Razor | ||
| Security | ||
| Servers | ||
| Shared | ||
| SignalR | ||
| SiteExtensions | ||
| Tools | ||
| submodules | ||