@@ -136,6 +136,7 @@ public async Task<IPublishedRequest> UpdateRequestAsync(
136136 builder . SetDomain ( request . Domain ) ;
137137 }
138138 builder . SetCulture ( request . Culture ) ;
139+ builder . SetSegment ( request . Segment ) ;
139140
140141 // set to the new content (or null if specified)
141142 builder . SetPublishedContent ( publishedContent ) ;
@@ -181,7 +182,7 @@ internal IPublishedRequest BuildRequest(IPublishedRequestBuilder builder)
181182 }
182183
183184 // set the culture -- again, 'cos it might have changed in the event handler
184- SetVariationContext ( result . Culture ) ;
185+ SetVariationContext ( result . Culture , result . Segment ) ;
185186
186187 return result ;
187188 }
@@ -205,15 +206,15 @@ private async Task<IPublishedRequest> TryRouteRequest(IPublishedRequestBuilder r
205206 return request . Build ( ) ;
206207 }
207208
208- private void SetVariationContext ( string ? culture )
209+ private void SetVariationContext ( string ? culture , string ? segment )
209210 {
210211 VariationContext ? variationContext = _variationContextAccessor . VariationContext ;
211- if ( variationContext != null && variationContext . Culture == culture )
212+ if ( variationContext != null && variationContext . Culture == culture && variationContext . Segment == segment )
212213 {
213214 return ;
214215 }
215216
216- _variationContextAccessor . VariationContext = new VariationContext ( culture ) ;
217+ _variationContextAccessor . VariationContext = new VariationContext ( culture , segment ) ;
217218 }
218219
219220 private async Task RouteRequestInternalAsync ( IPublishedRequestBuilder builder , bool skipContentFinders = false )
@@ -226,7 +227,7 @@ private async Task RouteRequestInternalAsync(IPublishedRequestBuilder builder, b
226227 }
227228
228229 // set the culture
229- SetVariationContext ( builder . Culture ) ;
230+ SetVariationContext ( builder . Culture , builder . Segment ) ;
230231
231232 var foundContentByFinders = false ;
232233
@@ -261,7 +262,7 @@ private async Task RouteRequestInternalAsync(IPublishedRequestBuilder builder, b
261262 HandleWildcardDomains ( builder ) ;
262263
263264 // set the culture -- again, 'cos it might have changed due to a finder or wildcard domain
264- SetVariationContext ( builder . Culture ) ;
265+ SetVariationContext ( builder . Culture , builder . Segment ) ;
265266 }
266267
267268 // trigger the routing request (used to be called Prepared) event - at that point it is still possible to change about anything
@@ -278,15 +279,15 @@ public bool RouteDomain(IPublishedRequestBuilder request)
278279 {
279280 var found = FindAndSetDomain ( request ) ;
280281 HandleWildcardDomains ( request ) ;
281- SetVariationContext ( request . Culture ) ;
282+ SetVariationContext ( request . Culture , request . Segment ) ;
282283 return found ;
283284 }
284285
285286 /// <inheritdoc />
286287 public bool UpdateVariationContext ( Uri uri )
287288 {
288289 DomainAndUri ? domain = FindDomain ( uri , out _ ) ;
289- SetVariationContext ( domain ? . Culture ) ;
290+ SetVariationContext ( domain ? . Culture , null ) ;
290291 return domain ? . Culture is not null ;
291292 }
292293
0 commit comments