Packages [expand] [collapse]

Release notes for Episerver updates

This overview lists changes included in Episerver updates delivered as NuGet packages and services. Use the information to decide which updates to apply to your project, see Installing Episerver updates. Select a product or package, and filter for dates, features, or bug fixes.

  • See only new features (all features) - filter on Feature.
  • See only end-user (user interface) features - filter on UI Feature.
  • See only critical bug fixes - filter on Critical Bug.

Note: New NuGet packages listed here may not be immediately available in the Episerver NuGet feed.

Changes in CMS:

Item type
From date
To date
Id Type Title Released
  Get URL to page with "Shortcut to another content item"
Steps to reproduce:

1. Add new page property to Article page type (ArticlePage.cs):

public virtual ContentReference RelatedPage { get; set; }

2. Add the following to Article page view file (/Views/ArticlePage/Index.cshtml):

<p>@Html.PropertyFor(m => m.CurrentPage.RelatedPage)</p>



3. Create three new page instances of Article page type:

  • Article A
  • Article B
  • Article C

4. On Article A, set the value of new property added in step1 to point to Article B.

5. On Article A, edit property MainBody and add a link to Article B.

6. On Article B, Settings tab, locate property Shortcut, click Manage and select:

  • Shortcut type: shortcut to another content item
  • Open in: - (leave empty)
  • Internal Shortcut/Fetch Data from: Article C

7. Visit Article A, click Options and View on website (not in edit view).

Expected result: All links should point to Article C.
Actual result: Url.ContentUrl links to Article B instead of Article C.

Version/s: EPiServer.CMS.Core 11.20.1;
Oct 27, 2020
  Calling convention must be VarArgs exception thrown for properties on generic classes

ContentModelILCompiler throws an exception if an interceptable property is declared on a generic class.

public class Content : BaseContent<int> { }
public abstract class BaseContent<TModel> : ContentData
{     public virtual bool Boolean \{ get; set; }

The thrown exception is an InvalidOperationException: "Calling convention must be VarArgs."

Version/s: EPiServer.CMS.Core 11.20.1;
Oct 27, 2020
  Typo in the documentation of Episerver.Framework.Cache.ReadStrategy.Wait
Issue Description

Fixed typo in meta document of the enum Episerver.Framework.Cache.ReadStrategy.Wait

Documentation says:
/// <summary>Will wait for pending updates to finish</summary>
/// <remarks>
/// <para>Typically used for scenarios where there is likely that several calls are done concurrent for an item
/// that is costly to load. In that case only one will perform the actual load while others will wait.
/// When the loading is done the waiting threads will be singnalled.</para>
/// <para>This option adds a marker object to the cache to signal that data is being loaded, do not use the same
/// cache key with other API's that do not take <see cref="T:EPiServer.Framework.Cache.ReadStrategy" /> since they will return the marker object
/// if called for example during a costly database operation.</para>
/// </remarks>

There is a spelling error in the paragraph for the word "singnalled", should be "signalled", also the word "concurrent" should be "concurrently".

Version/s: EPiServer.CMS.Core 11.20.1;
Oct 26, 2020
  Improve XhtmlString/ContentArea memory usage

XhtmlString/ContentAre consumed considerably more memory than they were actually storing. Sites with large amount of content could have unnecessary memory usage.

Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  Caching URL - Go to old url name

Steps to reproduce:
1. Open a page, e.g. Alloy Track > Edit 'Name in URL' > Publish it
2. Go to view mode > Click the page link on Navigation bar
Expected: It goes to the page with the updated name in url
Actual: It shows the error: "HTTP Error 404.0 - Not Found". It still goes to the old url name.
More details, please view the video.

Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  Item of PropertyLinkCollection is not exportable.

1- Create a page of content type that has PropertyLinkCollection property
2- Added media item (not from content asset) to the property (PropertyLinkCollection)
3- Export / import the page
4- The Medias should be followed export.

Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  NullReferenceException or EntryPointNotFoundException thrown with IL generated content models with CMS 11.19

Client has upgraded CMS from 11.17.0 -> 11.19.0. They have never deployed with 11.18.x.

Site starts up fine and they can login but when the browse any page they receive the following exception. (Scroll below exception to see what fixes it)

[NullReferenceException: Object reference not set to an instance of an object.]
x.y.z.Catalog.SKUContent_DynamicProxy.MakeReadOnly() +1184
EPiServer.Construction.Internal.ContentFactory.CreateContent(ContentType contentType, BuildingContext buildingContext) +351
EPiServer.Commerce.Catalog.Provider.Construction.Internal.CatalogContentFactory.CreateContent(ContentType contentType, BuildingContext buildingContext) +182
EPiServer.Commerce.Catalog.Provider.Construction.MetaClassContentFactory.Create(Type type, String language, Nullable`1 catalogId) +315
EPiServer.Commerce.Catalog.Provider.Construction.MetaClassContentFactory.Create(String baseEntryType, Int32 metaClassId, String language, Nullable`1 catalogId) +272
EPiServer.Commerce.Catalog.Provider.Construction.EntryBuilder.GetCatalogContent(String entryType, Int32 metaClassId, String language, Int32 catalogId) +68
EPiServer.Commerce.Catalog.Provider.Construction.<>c__DisplayClass8_0.<ConstructEntries>b__0(CatalogEntryRow x) +96
System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +234
System.Linq.WhereEnumerableIterator`1.MoveNext() +245
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +452
System.Linq.Enumerable.ToList(IEnumerable`1 source) +72
EPiServer.Commerce.Catalog.Provider.Construction.EntryBuilder.ConstructEntries(CatalogEntryDto entryDto, IDictionary`2 versionsForUnpublishedContent, IDictionary`2 primaryNodeRelations, String language) +359
EPiServer.Commerce.Catalog.Provider.Construction.EntryBuilder.Create(IList`1 contentLinks, String language) +879
EPiServer.Commerce.Catalog.Provider.CatalogContentLoader.ConstructContent(IList`1 contentLinks, Func`3 createContentFunc) +538
EPiServer.Commerce.Catalog.Provider.CatalogContentLoader.LoadSpecificContentInstances(IList`1 contentLinks, String language) +331
EPiServer.Commerce.Catalog.Provider.CatalogContentProvider.BatchLoad(IList`1 contentLinks, Func`2 dbLoader) +246
EPiServer.Commerce.Catalog.Provider.CatalogContentProvider.LoadContents(IList`1 contentReferences, ILanguageSelector selector) +779
EPiServer.Commerce.Catalog.Provider.CatalogContentProvider.LoadContent(ContentReference contentLink, ILanguageSelector languageSelector) +224
EPiServer.Core.<>c__DisplayClass121_0.<LoadContentFromCacheOrRepository>b__0() +34
EPiServer.Framework.Cache.ObjectInstanceCacheExtensions.ReadThroughWithWait(IObjectInstanceCache cache, String cacheKey, Func`1 readValue, Func`2 evictionPolicy) +1035
EPiServer.Core.Internal.ContentInstanceCache.ReadThrough(ContentReference contentLink, String selectedLanguage, Func`1 readValue) +107
EPiServer.Core.ContentProvider.LoadContentFromCacheOrRepository(ContentReference contentreference, ILanguageSelector selector) +617
EPiServer.Core.Internal.ProviderPipelineImplementation.GetItem(ContentProvider provider, ContentReference contentLink, LoaderOptions loaderOptions) +327
EPiServer.Core.Internal.DefaultContentLoader.TryGet(ContentReference contentLink, LoaderOptions loaderOptions, T& content) +577
EPiServer.Core.Html.StringParsing.ContentFragment.GetContent(Boolean enableMasterLanguageFallback) +203
EPiServer.Core.Html.StringParsing.ContentFragment.GetSecurityDescriptor() +33
EPiServer.Core.ContentAreaItem..ctor(ContentFragment fragment) +55


But adding the following app setting fixes it

<add key="episerver:setoption:EPiServer.Core.ContentOptions.ProxyType,EPiServer" value="Castle" />
Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  Content Types should be sorted by SortOrder and then Alphabetically

Steps to reproduce:

  1. Create few page types with same order. CPage1, BPage2, APage1
  2. Go to Edit Mode and click New Page

Expected: Pages should be sorted Alphabetically.

Probably can be implemented as:

Unable to find source-code formatter for language: csharp. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
.OrderBy(c => SortByGroupDefinition(c)).ThenBy(ct => ct.SortOrder).ThenBy(ct => ct.Name)
Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  URL segment is not unique after moving pages and creating new pages

This issue is somewhat tricky to reproduce - please see the attached screencast for demonstration on how to reproduce the issue an Alloy site.

written steps to reproduce:

1. Create a new page with URL segment "Test en", language "en" and publish.
2. Create a translation with URL segment "Test sv", language "sv" and publish.
3. Select current editing language to "en".
4. Move the page to a different location like Page C.
5- Move the to wastebasket or other place ( it does not need to be wastebasket)
5. Create another page to the location Page C by repeating steps 1 and 2.
-> On translated page the "Name in URL" property show "test-sv2". It should show "test-sv", because there isn't a page with the same URL segment at the same level.
6. On translated page, set the "Name in URL" property to "test-sv" and publish.
-> An error occurs: Something went wrong "Name in URL" with value "test-sv" is already in use by Test sv (<ContentId>).

<ContentId> is refererring to the moved page.

I created an eventhandler that clears the content provider's cache after moving content to ensure that the problem is with the cache:

private void ContentEvents_MovedContent(object sender, ContentEventArgs e)
var contentProviderManager = ServiceLocator.Current.GetInstance<IContentProviderManager>();
var contentprovider = contentProviderManager.GetProvider(e.ContentLink.ProviderName);

If the cache is cleared, there will be no issues mentioned above.

Expected: : Name in URL is "test-sv"
Actual: Name in URL is "test-sv2"

Also used
<package id="EPiServer.Labs.LanguageManager" version="4.0.0"

Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
  Physical connection is not usable

steps to reproduce:

  1. Create a new database on Azure and connect Alloy site to it
  2. Scale up the database and visit Alloy
    Expected: There is no downtime when scaling up
    Actual: The site is down for some times because of physical connection is closed

Note: When scaling the database, there is a small-time the physical connection is down. If the transaction begins after the physical connection is down, Alloy site will throw error code -1 and we can handle with retry policy. On another hand, the transaction begins right before the physical connection down, it's another problem (see screenshot 2).

Version/s: EPiServer.CMS.Core 11.20.0;
Oct 07, 2020
1 2 3 4 5 6 Next