Quantcast
Channel: Customized Commerce 13 and earlier versions
Viewing all 9642 articles
Browse latest View live

Promotion applying

$
0
0

Hello.

I have 2 promotions:

1) Entry level which gives 50% off on specified variant (placed price 13$);

2) Order level which gives 1$ off if cart subtotal greater than 10$;

Before applying promotions my cart total is 18$ (subtotal 13$ + handlingtotal 5$).

When I apply entry level promotion I got updated subtotal 6.5$ and total 11.5$. Then I apply the second promotion and I expect that it will not be applied (because condition >10$), but as I see the second promotion is still applied.

I changed the condition to "running total greater than 10$" and now its working as expected but can someone explain whats wrong with conditions built with subtotal/total? And in which cases what conditions better to use? For example, how to change the second promotion to check cart's total (including handling totals and etc)?

Thanks.

P.S. Episerver Commerce 9.19.1


Issue with saving ShippingProviderParameters (Version: 9.11 (build: 1)

$
0
0

Hello all

Maybe somebody saw same error. While saving parameters of ShippingProvider I am getting following exception

_____________________________________________________________________

Server Error in '/' Application.
Column 'ShippingOptionParameterId' is constrained to be unique.  Value '3' is already present.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.Data.ConstraintException: Column 'ShippingOptionParameterId' is constrained to be unique.  Value '3' is already present.
Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace: 
[ConstraintException: Column 'ShippingOptionParameterId' is constrained to be unique.  Value '3' is already present.]
   System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) +1697124
   System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) +53
   System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) +2350
   System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows) +268
   EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute(Func`1 method) +66
   Mediachase.Data.Provider.SqlDataProvider.SaveRows(DataCommand command) +1231
   Mediachase.Commerce.Storage.DataHelper.SaveDataSetSimple(DataCommand cmd, DataSet set, String[] tables) +66
   Mediachase.Commerce.Orders.Managers.ShippingManager.SaveShipping(ShippingMethodDto dto) +388
   Mediachase.Commerce.Manager.Order.Shipping.ShippingOptionEdit.EditSaveControl_SaveChanges(Object sender, SaveEventArgs e) +634
   Mediachase.Commerce.Manager.Core.SaveControl.OnSaveChanges(Object sender, EventArgs e) +61
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11802193
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1735

_____________________________________________________________________

When I look into [dbo].[ShippingOptionParameter], table is empty. On repeated attempts to save, it just increases the identity that bounced, but doesn't write to the table. I tried to RESEED it, and it behaves the same, just throws with id being taken from 1 and on.

I also looked into it with SQL profiler, and this is what it attempts to do

exec sp_executesql N'INSERT INTO [ShippingOptionParameter] ([ShippingOptionId],[Parameter],[Value]) VALUES (@ShippingOptionId,@Parameter,@Value); SELECT SCOPE_IDENTITY() AS [ShippingOptionParameterId]',N'@ShippingOptionId uniqueidentifier,@Parameter nvarchar(50),@Value nvarchar(255)',@ShippingOptionId='94449DF4-4C9E-45F9-9AFF-A3F07CC96247',@Parameter=N'Consignor.IsProduction',@Value=N'false'

When I alter it to 

  INSERT INTO [ShippingOptionParameter] 
	([ShippingOptionId],[Parameter],[Value]) VALUES 
	('[MyGuidOptionId here]','[MyValueHere]','false'); 

That one row get's inserted. Now back to the form where I have couple of parameters to save. Did anyone see such exception, what might be the reason?

Thanks in advance


Error in Catalog import

$
0
0

In our epi commerce project we have approximately 400.000 products. These products are added/updated bij uploading zipped catalog.xml packages onto the service api (in batches of 2000 products).

Our import was working fine, until we got some timeout exceptions. After fixing the timeout problems (seems we were keeping up to 20 versions of some products) we now get the exception displayed below. (from the error log)

Does anyone have any idea what could be causing this?

Starting import...
Start importing catalog properties
Importing catalog Products
Finished importing catalog properties
Start importing catalog nodes
Finished importing catalog nodes
Start importing catalog entries
Imported catalog entries: 200 of 2000.
Imported catalog entries: 400 of 2000.
There is no Original data to access.
at System.Data.DataRow.GetOriginalRecordNo()
at System.Data.DataRow.GetRecordFromVersion(DataRowVersion version)
at System.Data.DataRow.get_Item(String columnName, DataRowVersion version)
at Mediachase.Commerce.TypedTableBaseExtensions.CatalogIdChanged(DataRow dataRow)
at Mediachase.Commerce.Catalog.Managers.CatalogEntryManager.<>c.<SaveCatalogEntry>b__14_1(CatalogEntryRow e)
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Mediachase.Commerce.Catalog.Managers.CatalogEntryManager.SaveCatalogEntry(CatalogEntryDto dataset)
at Mediachase.Commerce.Catalog.Impl.CatalogContextImpl.SaveCatalogEntry(CatalogEntryDto dto)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.SaveEntryDto(CatalogEntryDto workingCatalogEntryDto, Dictionary`2 metaObjectsList, Dictionary`2 priceGroups, Dictionary`2 warehouseInventories)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.ReadEntries(Guid applicationId, Int32 catalogId, XmlReader reader, String baseFilePath, Int32 totalCount, String defaultCurrency, Boolean overwrite, IEnumerable`1 catalogLanguages)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.Import(Stream input, Guid applicationId, String baseFilePath, Boolean overwrite)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.<>c__DisplayClass7.<DoImport>b__5()
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.WithApplicationId(Guid applicationId, Action action)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.DoImport(String[] stages, Int32 stageIndex, String sourceFile, String sourceDirectory)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.ExecuteJob(Guid jobId)

Need to set the Max Quantity even when inventory is set disabled?

$
0
0

Hi,

I want to disable the inventory, because we don't need it. So in the commerce manager I've set the inventory tracking and inventory status to disable on a variation.

Whenever I try to order a project (reproduced this on the QuickSilver demo site (https://github.com/episerver/Quicksilver)) the Workflow engine returns me the warning: 

Item "" has been removed from the cart because it is no longer available or there is not enough available quantity.

 

Whenever I set the Max Quantity setting on the variable to something higher then 0, it starts working. This was also confirmed when I debug activity: CheckInventoryActivity

The below method is called and eventually it will set the lineItemQty to 0 and the changeQtyReason.Add("by Max Quantity setting"). 

protected Decimal GetNewLineItemQty(LineItem lineItem, List<string> changeQtyReason, Shipment shipment)
    {
      Decimal lineItemQty = shipment != null ? Shipment.GetLineItemQuantity(shipment, lineItem.LineItemId) : lineItem.Quantity;
      if (lineItemQty < lineItem.MinQuantity)
      {
        lineItemQty = lineItem.MinQuantity;
        changeQtyReason.Add("by Min Quantity setting");
      }
      else if (lineItemQty > lineItem.MaxQuantity)
      {
        lineItemQty = lineItem.MaxQuantity;
        changeQtyReason.Add("by Max Quantity setting");
      }
      if (!this.InventoryTrackingEnabled(OrderGroupActivityBase.GetEntryRowForLineItem(lineItem)))
        return lineItemQty;

I would expect whenever I disable the inventory I would not set the Max Quantity on the variation?

Facing issues in calculating discounts

$
0
0

Hi Team,

I am facing issue in applyign discounts based on segment mapped to campaigns 

The below line is returning object reference error  at Mediachase.Commerce.Security.SecurityContext.GetCurrentUserProfile() in CalculateDiscountActivity.cs

CustomerProfileWrapper profile = SecurityContext.Current.CurrentUserProfile as CustomerProfileWrapper

It is a disconnected architecture. We are using webapi to create purchaseorder and apply promotions.

Is there anyway to get the CustomerProfileWrapper

I tried the below way but is returning null 

var profile = Mediachase.Commerce.Customers.Profile.CustomerProfile.Create(customerContact.UserId) as CustomerProfileWrapper;

Also Please confirm if the below code is used for mapping to segments while calculating discounts.

if (profile != null)
{

SetContext(MarketingContext.ContextConstants.CustomerProfile, profile);

CustomerContact customerContact = CustomerContext.Current.GetContactForUser(user);
if (customerContact != null)
{
SetContext(MarketingContext.ContextConstants.CustomerContact, customerContact);

Guid accountId = (Guid)customerContact.PrimaryKeyId;
Guid organizationId = Guid.Empty;
if (customerContact.ContactOrganization != null)
{
organizationId = (Guid)customerContact.ContactOrganization.PrimaryKeyId;
}

SetContext(MarketingContext.ContextConstants.CustomerSegments, MarketingContext.Current.GetCustomerSegments(accountId, organizationId));
}
}

Thanks in advance

Thanks,

Manjeera T

Search Commerce content from CMS editor using SolrSearchProvider

$
0
0

Hi all

I'm not entirely sure if this is a commerce or CMS query, but now I try this forum.

I'm setting up a new Episerver website with both CMS and Commerce. I'm using the latest version (9.23).

We are currently in the early stages of development, so there are still a lot of things that haven't settled yet. I know that we will use Solr as the search engine, but our business requirements may dictate that we don't want to use the query mechanism i the Episerver Solr35SearchProvider. I know that we are going to make changes, but I just don't know if it is worth making the changes in the search provider or if it is easier to start from the bottom and build our own search integration to Solr.

The CMS editors will need to be able to drag Commerce content into the CMS pages. This is possible from the Asset widget in the CMS editor. The Asset widget also have a search field, that I was hoping to be able to use to search in the Commerce content. However I can't get it to work.

I have configured the search provider in the Mediachase.search.config file in both my CMS and my Commerce Manager websites. Everyting is working on the Commerce Manager website, and when I try to search from the Commerce manager, my search provider is hit, and it queries Solr for search results.

When I try from the CMS editor, I get no search results.

I have tried setting up breakpoints in the SearchProvider, and these breakpoints get hit from the Commerce Manager, but not when I search from the CMS editor.

What am I missing? Isn't it possible to use the Commerce search providers for searching commerce content in the CMS editor? Then how can I setup commerce content search in the CMS editor?

Thank you for your help

Regards

Anders

EPiServer Commerce 9.14.1 - ContentRepository doesn't always return the latest published version

$
0
0

Hi,

I have a project that is using EPiCommerce 9.14.1

For some products, ContentRepository doesn't return data from the latest published version.

Code:

var productIdFromCommerce = 12345;
var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
var referenceConverter = ServiceLocator.Current.GetInstance<ReferenceConverter>();
var productLink = referenceConverter.GetContentLink(productIdFromCommerce, CatalogContentType.CatalogEntry, 0);
var productContent = contentRepository.Get<ProductContent>(productLink);

Let's say the product has versions 1010, 1011, and 1012 available. The code above will return data for version 1010, instead of version 1012.

If I make changes to the product and publish changes (either from CM or the code), ContentRepository returns correct data (from version 1013).

The same code works fine for other products, so I first thought it's a caching issue, but I've restarted IIS several times, cleared cookies, browser data, etc.

Did anyone have the same problem?

A solution that worked for me was to use IContentVersionRepository and always fetch data from the latest published version.

Use Commerce objects outside of website

$
0
0

We have a need to import orders from Episerver into an external system, this does not need to be done real-time and will be a service running on a different server.  I would like to use the Episerver/Mediachase objects to do that, but am having trouble figuring out how to initalize the OrderContext and pull data from the Episerver database. What is the best way to use the commerce objects outside of the episerver website soluction/project?


Episerver commerce updating price on already done orders

$
0
0

Hi,

When some update for example, shipping adress or when  return is created on an order. The totals and everything are recalculated. If a price has changed on an article during that time commerce manager picks up the new price on both listprice and placedprice. This is so dangerous i cannot believe it.

Does anyone have a solution for this?

RegisterPartialRouter - Can't Index Content In Find

$
0
0

Hi,

We're using Commerce 9.20, and Find 12.1.

I'm trying to register a custom partial router. I have removed the line in the commerce init module which registers the default router, and I'm using this code to register the custom one:

            var referenceConverter = ServiceLocator.Current.GetInstance<ReferenceConverter>();
            var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
            var commerceRootContent = contentLoader.Get<CatalogContentBase>(referenceConverter.GetRootLink());
            var partialRouteHandler = context.Locate.Advanced.GetInstance<PartialRouteHandler>();
            var hierarchicalCatalogPartialRouter = new CustomHierarchicalPartialRouter(() => SiteDefinition.Current.StartPage, commerceRootContent);
            partialRouteHandler.RegisterPartialRouter(new PartialRouter<PageData, CatalogContentBase>(hierarchicalCatalogPartialRouter));

Here is the router code - as you can see, it's supposed to do nothing at the moment:

    public class CustomHierarchicalPartialRouter : HierarchicalCatalogPartialRouter
    {
        private readonly IContentLoader _contentLoader;
        private readonly ILinksRepository _linksRepository;
        private readonly ReferenceConverter _referenceConverter;
        public CustomHierarchicalPartialRouter(
            Func<ContentReference> routeStartingPoint,
            CatalogContentBase commerceRoot)
            : base(routeStartingPoint,
                commerceRoot,
                false,
                ServiceLocator.Current.GetInstance<IContentLoader>(),
                ServiceLocator.Current.GetInstance<IRoutingSegmentLoader>(),
                ServiceLocator.Current.GetInstance<IContentVersionRepository>(),
                ServiceLocator.Current.GetInstance<IUrlSegmentRouter>(),
                ServiceLocator.Current.GetInstance<IContentLanguageSettingsHandler>(),
                ServiceLocator.Current.GetInstance<ServiceAccessor<HttpContextBase>>())
        {
            this._contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
            this._linksRepository = ServiceLocator.Current.GetInstance<ILinksRepository>();
            this._referenceConverter = ServiceLocator.Current.GetInstance<ReferenceConverter>();
        }
        public override PartialRouteData GetPartialVirtualPath(CatalogContentBase content, string language, RouteValueDictionary routeValues, RequestContext requestContext)
        {
            return base.GetPartialVirtualPath(content, language, routeValues, requestContext);
        }
    }

I was hoping that this would have no net effect, but it does - the Find indexer stops working. I'm getting errors like this in the Find indexing job:

An exception occurred while indexing content 1073741865__CatalogContent: Exception has been thrown by the target of an invocation. (see log for more information)

When I have a look in the log as the error suggests, I get the stack trace below. Am I registering the router correctly?

Stack Trace:

System.ArgumentNullException: The provided content link does not have a value.
Parameter name: contentLink
at EPiServer.Core.DefaultContentLoader.Get[T](ContentReference contentLink, LoaderOptions loaderOptions)
at EPiServer.Web.Routing.Segments.NodeSegment.GetVirtualPathSegment(RequestContext requestContext, RouteValueDictionary values)
at EPiServer.Web.Routing.Segments.NodeSegment.GetVirtualPathSegment(RequestContext requestContext, RouteValueDictionary values, HashSet`1 usedValues)
at EPiServer.Web.Routing.ContentRoute.AddVirtualPathFromSegments(StringBuilder virtualPath, RequestContext requestContext, RouteValueDictionary values, HashSet`1 usedValues, Int32 lastNonDefaultIndex)
at EPiServer.Web.Routing.ContentRoute.GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
at EPiServer.Web.Routing.DefaultUrlResolver.GetUrlFromRoute(ContentReference contentReference, String language, RouteValueDictionary routeValues, RequestContext requestContext)
at EPiServer.Web.Routing.DefaultUrlResolver.GetVirtualPathInternal(ContentReference contentLink, String language, VirtualPathArguments arguments)
at EPiServer.Web.Routing.UrlResolver.GetUrl(ContentReference contentLink, String language)
at EPiServer.Find.Commerce.CommerceUnifiedSearchSetUp.GetContentUrl(ContentReference contentLink)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at EPiServer.Find.UnifiedSearch.IndexProjection.GetUrl(Object o)
at EPiServer.Find.DelegateValueProvider`2.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at EPiServer.Find.Api.BulkActionConverter.WriteJson(JsonWriter writer, Object value, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeConvertable(JsonWriter writer, JsonConverter converter, Object value, JsonContract contract, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at EPiServer.Find.Json.Serializer.SerializeToTextWriter(JsonSerializer serializer, Object value, TextWriter textWriter)
at EPiServer.Find.Json.Serializer.SerializeObjectsToJsonRequest(JsonSerializer serializer, IJsonRequest jsonRequest, IEnumerable values)
at EPiServer.Find.Api.BulkCommand.Execute()
at EPiServer.Find.Cms.ContentIndexer.IndexWithRetry(IContent[] contents, Int32 maxRetries)
at EPiServer.Find.Cms.ContentIndexer.Index(IEnumerable`1 content, IndexOptions options)
at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& indexingCount)
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentNullException: The provided content link does not have a value.
Parameter name: contentLink
at EPiServer.Core.DefaultContentLoader.Get[T](ContentReference contentLink, LoaderOptions loaderOptions)
at EPiServer.Web.Routing.Segments.NodeSegment.GetVirtualPathSegment(RequestContext requestContext, RouteValueDictionary values)
at EPiServer.Web.Routing.Segments.NodeSegment.GetVirtualPathSegment(RequestContext requestContext, RouteValueDictionary values, HashSet`1 usedValues)
at EPiServer.Web.Routing.ContentRoute.AddVirtualPathFromSegments(StringBuilder virtualPath, RequestContext requestContext, RouteValueDictionary values, HashSet`1 usedValues, Int32 lastNonDefaultIndex)
at EPiServer.Web.Routing.ContentRoute.GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
at EPiServer.Web.Routing.DefaultUrlResolver.GetUrlFromRoute(ContentReference contentReference, String language, RouteValueDictionary routeValues, RequestContext requestContext)
at EPiServer.Web.Routing.DefaultUrlResolver.GetVirtualPathInternal(ContentReference contentLink, String language, VirtualPathArguments arguments)
at EPiServer.Web.Routing.UrlResolver.GetUrl(ContentReference contentLink, String language)
at EPiServer.Find.Commerce.CommerceUnifiedSearchSetUp.GetContentUrl(ContentReference contentLink)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at EPiServer.Find.UnifiedSearch.IndexProjection.GetUrl(Object o)
at EPiServer.Find.DelegateValueProvider`2.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at EPiServer.Find.Api.BulkActionConverter.WriteJson(JsonWriter writer, Object value, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeConvertable(JsonWriter writer, JsonConverter converter, Object value, JsonContract contract, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at EPiServer.Find.Json.Serializer.SerializeToTextWriter(JsonSerializer serializer, Object value, TextWriter textWriter)
at EPiServer.Find.Json.Serializer.SerializeObjectsToJsonRequest(JsonSerializer serializer, IJsonRequest jsonRequest, IEnumerable values)
at EPiServer.Find.Api.BulkCommand.Execute()
at EPiServer.Find.Cms.ContentIndexer.IndexWithRetry(IContent[] contents, Int32 maxRetries)
at EPiServer.Find.Cms.ContentIndexer.Index(IEnumerable`1 content, IndexOptions options)
at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& indexingCount)

issue with cms(chrome)

$
0
0
Hi Team, I have an issue that when i am browsing my application in IE,i am able open cms in edit/admin mode but when i am browsing my application in chrome,i am unable to open cms in edit/admin mode. Please help me on the mentioned issue & let me know if any information is required. Details are-i am using episerver 6 version for both cms & commerce manager. Thanks & Regards, Neha Ladia.

Can't login with new users on azure

$
0
0

I'm running 9.20.0

I can't login with users created in the cms admin. It's been working before and somwhere along the way, this problem arised. It works on my local dev against my local database, but not against the database on azure. I've also tried to run my local application against the database on azure with the same result.

The user is created and appears in the cms, but when I try to login with the user I get a NullReferenceException with following StackTrace:

[NullReferenceException: Object reference not set to an instance of an object.]
at Mediachase.BusinessFoundation.Data.BaseFieldValidator.GetValue()
at Mediachase.BusinessFoundation.Data.StringFieldValidator.EvaluateIsValid()
at Mediachase.BusinessFoundation.Data.BaseFieldValidator.Validate()
at Mediachase.BusinessFoundation.Data.Meta.MetaObject.Validate()
at Mediachase.BusinessFoundation.Data.Meta.MetaObject.OnSaving()
at Mediachase.BusinessFoundation.Data.Meta.MetaObject.Save(Boolean forceSave)
at Mediachase.BusinessFoundation.Data.Meta.MetaObject.Save()
at Mediachase.BusinessFoundation.Data.Business.EntityObjectDefaultRequestHandler.Create(BusinessContext context)
at Mediachase.BusinessFoundation.Data.Business.EntityObjectDefaultRequestHandler.Execute(BusinessContext context)
at Mediachase.BusinessFoundation.Data.Business.BaseRequestHandler.Mediachase.BusinessFoundation.Data.Business.IRequestHandler.Execute(BusinessContext context)
at Mediachase.BusinessFoundation.Data.Business.BusinessManager.ExecutePipeline(Request request, IRequestHandler handler)
at Mediachase.BusinessFoundation.Data.Business.BusinessManager.ExecutePipelineInTransaction(Request request, IRequestHandler handler)
at Mediachase.BusinessFoundation.Data.Business.BusinessManager.Execute(Request request)
at Mediachase.BusinessFoundation.Data.Business.BusinessManager.Create(EntityObject target)
at Mediachase.Commerce.Customers.CustomerContact.SaveChanges()
at Mediachase.Commerce.Security.PrincipalExtensions.GetCustomerContact(IPrincipal principal)
at Mediachase.Commerce.Security.PrincipalExtensions.GetContactId(IPrincipal principal)
at Mediachase.Commerce.Core.Modules.BusinessFoundationInitializeModule.context_AuthorizeRequest(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Update: It seems to always happen when a CustomerContact is created. When I try to create a new Contact inside Commerce Manager I get exception at the same place with the following StackTrace:

[NullReferenceException: Object reference not set to an instance of an object.]
   Mediachase.BusinessFoundation.Data.BaseFieldValidator.GetValue() +273
   Mediachase.BusinessFoundation.Data.StringFieldValidator.EvaluateIsValid() +73
   Mediachase.BusinessFoundation.Data.BaseFieldValidator.Validate() +66
   Mediachase.BusinessFoundation.Data.Meta.MetaObject.Validate() +166
   Mediachase.BusinessFoundation.Data.Meta.MetaObject.OnSaving() +118
   Mediachase.BusinessFoundation.Data.Meta.MetaObject.Save(Boolean forceSave) +76
   Mediachase.BusinessFoundation.Data.Meta.MetaObject.Save() +54
   Mediachase.BusinessFoundation.Data.Business.EntityObjectDefaultRequestHandler.Create(BusinessContext context) +976
   Mediachase.BusinessFoundation.Data.Business.EntityObjectDefaultRequestHandler.Execute(BusinessContext context) +720
   Mediachase.BusinessFoundation.Data.Business.BaseRequestHandler.Mediachase.BusinessFoundation.Data.Business.IRequestHandler.Execute(BusinessContext context) +60
   Mediachase.BusinessFoundation.Data.Business.BusinessManager.ExecutePipeline(Request request, IRequestHandler handler) +151
   Mediachase.BusinessFoundation.Data.Business.BusinessManager.ExecutePipelineInTransaction(Request request, IRequestHandler handler) +117
   Mediachase.BusinessFoundation.Data.Business.BusinessManager.Execute(Request request) +768
   Mediachase.BusinessFoundation.Data.Business.BusinessManager.Create(EntityObject target) +106
   Mediachase.Commerce.Manager.Apps.MetaUIEntity.Tabs.EntityEditTab.SaveChanges(IDictionary context) +940
   Mediachase.Commerce.Manager.Core.Controls.EditViewControl.SaveChanges(IDictionary context) +290
   Mediachase.Commerce.Manager.Core.SaveControl.OnSaveChanges(Object sender, EventArgs e) +60
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11762636
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +149
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6015

Too many redirects error in the browser after package update.

$
0
0

I have updated packages to the latest version and get too many redirect error in the browser. It seems that Commerce migration page requires authenticated admin so it redirects to Login page but Login page redirects back to Migrate page as Commerce DB is not migrated yet.

I have Commerce 9.23.0 installed and it was updated from 9.19.1. I am also using EPiServer.CMS.UI.AspNetIdentity package for authentication.

Is there any way to disable redirect to the migration page from the login page or allow an anonymous user (temporarily) run the migration.

Possible to use new promotions + old promotions simultaneously ?

$
0
0

Hi,

Is it possible to use old & new promotions at the same time?  And if so, would it be reliable, or would you recommend against it?

Thanks!

 - Ken

Rapidly decreasing performance with moderate concurrency levels, StructureMap lock contention

$
0
0

Can anyone comment on this or state whether they have seen or resolved a similar issue. Testing was performed against an EPi commerce site
(http://world.episerver.com/releases/episerver---update-114/) and the mainline of Alloy downloaded from the public Git from 9th August 2016.

During performance testing we noticed a very large increase in response times for page requests to an EPiServer commerce site when under load. Given the scenario of a single user accessing a CMS page as a benchmark (the site has been restarted and the page accessed once to initialise and load the page prior to each test) we saw an approximate increase of the response time upwards of 40x when the same request was made by 100 users concurrently. (100 threads running concurrently each requesting the same page twice sequentially and the average response in milliseconds recorded)

This same effect can be seen to slightly lesser extent against the Alloy site where they home page was used, in this case it was an approximate 30x increase. Alloy was used rather than Quicksilver as it should be a less complex site.

When attaching the profiler (in our case RedGate) the major issues seems to be with Structuremap and I believe potentially resource contention. A single request to the homepage for Alloy generates tens of thousands of calls to the Structuremap Container.GetInstance method. Internally this results in calls to SessionCache.GetInstance and RootInstanceGraph.GetDefault which in turn result in calls to Cache.Fill and LifecycleObjectCache.Get. Both these methods rely on locking. With a single user this doesn't present as an issue. As I increase the number of concurrent requests the time waiting within these locking methods rapidly increases.

It appears in newer versions of Structuremap 4+ the Cache class was first used less and then removed to improve resource contention issues. This may indicate there is/was a general issue in Structuremap that is highlighted with EpiServer because of itsusage patterns.

Has anyone else seen this or similar behaviour, or am I missing something obvious that needs to be configured with Epi or IIS to maximise concurrent performance?. (FYI - The server resources are not being tasked during these tests, CPU generally sits around 10%)

I would assume this can be mitigated by implementing output caching or using many micro instances in a webfarm when hosting.

Thanks,

Andrew


Cannot insert the value NULL into column 'Value', table 'dbo.MetaDictionary'

$
0
0

In EPiCommerce I am trying to use the Dictionary Property Values.
On a variant I added the following property:

[Display(Name = "Product color", Description = "Product color", GroupName = SystemTabNames.Content, Order = 113)]
[BackingType(typeof(PropertyDictionarySingle))]
public virtual string ProductColor { get; set; }

This makes ProductColor available in commerce settings. When I try to add a value (im sure it's not empty) nothing happens. In the log file I see the following:

2016-09-30 15:06:30,423 [540] ERROR EPiServer.Global: 1.2.5 Unhandled exception in ASP.NET
System.Data.SqlClient.SqlException (0x80131904): Cannot insert the value NULL into column 'Value', table 'dbo.MetaDictionary'; column does not allow nulls. INSERT fails.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
   at Mediachase.Data.Provider.SqlDataProvider.ExecuteNonExec(DataCommand command)
   at Mediachase.MetaDataPlus.Common.DBHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText, Int32 commandTimeout, DataParameter[] commandParameters)
   at Mediachase.MetaDataPlus.Configurator.MetaDictionary.Add(String defaultValue, String value, Object defaultTag, Object tag, MetaDataContext context)
   at Mediachase.MetaDataPlus.Configurator.MetaDictionary.Add(MetaDictionaryItem item)
   at EPiServer.Commerce.Shell.Rest.MetaDictionaryItemStore.Post(MetaDictionaryItemModel model)
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.b__1c()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at EPiServer.Shell.Services.Rest.RestControllerBase.EndExecute(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
ClientConnectionId:1ccf0a67-603b-47b2-b606-ed87c32d4f25
Error Number:515,State:2,Class:16
System.Data.SqlClient.SqlException (0x80131904): Cannot insert the value NULL into column 'Value', table 'dbo.MetaDictionary'; column does not allow nulls. INSERT fails.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
   at Mediachase.Data.Provider.SqlDataProvider.ExecuteNonExec(DataCommand command)
   at Mediachase.MetaDataPlus.Common.DBHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText, Int32 commandTimeout, DataParameter[] commandParameters)
   at Mediachase.MetaDataPlus.Configurator.MetaDictionary.Add(String defaultValue, String value, Object defaultTag, Object tag, MetaDataContext context)
   at Mediachase.MetaDataPlus.Configurator.MetaDictionary.Add(MetaDictionaryItem item)
   at EPiServer.Commerce.Shell.Rest.MetaDictionaryItemStore.Post(MetaDictionaryItemModel model)
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.b__1c()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at EPiServer.Shell.Services.Rest.RestControllerBase.EndExecute(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
ClientConnectionId:1ccf0a67-603b-47b2-b606-ed87c32d4f25
Error Number:515,State:2,Class:16

Am I missing something or is this a bug?

After deletion of LineItem from Cart, exception thrown during Migrate event after login

$
0
0

I'm using the VNext workflow on Commerce 9.22. I'm having the following issue:

- An anonymous user fills a cart

- The users removes a LineItem

- The user logs in, the transferal/merging of the cart automatically takes place but throws the following exception:

ArgumentOutOfRange_Index
Parameter name: index

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: ArgumentOutOfRange_Index
Parameter name: index

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:

[ArgumentOutOfRangeException: ArgumentOutOfRange_Index
Parameter name: index]
   Mediachase.Commerce.Storage.StorageCollectionBase.System.Collections.IList.get_Item(Int32 index) +183
   Mediachase.Commerce.Storage.MetaStorageCollectionBase`1.get_Item(Int32 index) +13
   Mediachase.Commerce.Orders.Cart.UpdateLineItemIndexesInShipment(Shipment shipment, OrderForm fromOrderForm, OrderForm toOrderForm) +156
   Mediachase.Commerce.Orders.Cart.Add(OrderGroup orderGroup, Boolean lineItemRollup) +833
   EPiServer.Business.Commerce.HttpModules.ProfileModule.MigrateCart(String cartName, Guid contactId, String anonymousId, IMarket market) +194
   EPiServer.Business.Commerce.HttpModules.ProfileModule.MigrateShoppingCart(CustomerContact customerContact, String anonymousID) +479
   EPiServer.Business.Commerce.HttpModules.ProfileModule.Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs pe) +614
   System.Web.Profile.ProfileModule.OnEnter(Object source, EventArgs eventArgs) +9951361
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

For removing the lineItem from the Cart i'm using the following code:

var lineItem = CartHelper.LineItems.FirstOrDefault(l => l.LineItemId == model.id);
cartHelper.GetOrderForm().LineItems.Remove(lineItem);
cartHelper.GetOrderForm().Shipments.First().LineItems.Remove(lineItem);
OrderRepository.Service.Save(CartHelper.Cart);


I've tried to remove the line where i remove the LineItem from the shipment, but with no effect. After the users removes the lineItem the cart is displayed like it should, and in CommerceManager the cart also contains the correct products.

Does anyone have any suggestions?

Error in Catalog import

$
0
0

In our epi commerce project we have approximately 400.000 products. These products are added/updated bij uploading zipped catalog.xml packages onto the service api (in batches of 2000 products).

Our import was working fine, until we got some timeout exceptions. After fixing the timeout problems (seems we were keeping up to 20 versions of some products) we now get the exception displayed below. (from the error log)

Does anyone have any idea what could be causing this?

Starting import...
Start importing catalog properties
Importing catalog Products
Finished importing catalog properties
Start importing catalog nodes
Finished importing catalog nodes
Start importing catalog entries
Imported catalog entries: 200 of 2000.
Imported catalog entries: 400 of 2000.
There is no Original data to access.
at System.Data.DataRow.GetOriginalRecordNo()
at System.Data.DataRow.GetRecordFromVersion(DataRowVersion version)
at System.Data.DataRow.get_Item(String columnName, DataRowVersion version)
at Mediachase.Commerce.TypedTableBaseExtensions.CatalogIdChanged(DataRow dataRow)
at Mediachase.Commerce.Catalog.Managers.CatalogEntryManager.<>c.<SaveCatalogEntry>b__14_1(CatalogEntryRow e)
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Mediachase.Commerce.Catalog.Managers.CatalogEntryManager.SaveCatalogEntry(CatalogEntryDto dataset)
at Mediachase.Commerce.Catalog.Impl.CatalogContextImpl.SaveCatalogEntry(CatalogEntryDto dto)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.SaveEntryDto(CatalogEntryDto workingCatalogEntryDto, Dictionary`2 metaObjectsList, Dictionary`2 priceGroups, Dictionary`2 warehouseInventories)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.ReadEntries(Guid applicationId, Int32 catalogId, XmlReader reader, String baseFilePath, Int32 totalCount, String defaultCurrency, Boolean overwrite, IEnumerable`1 catalogLanguages)
at Mediachase.Commerce.Catalog.ImportExport.CatalogImportExport.Import(Stream input, Guid applicationId, String baseFilePath, Boolean overwrite)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.<>c__DisplayClass7.<DoImport>b__5()
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.WithApplicationId(Guid applicationId, Action action)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.DoImport(String[] stages, Int32 stageIndex, String sourceFile, String sourceDirectory)
at EPiServer.ServiceApi.Commerce.Jobs.CatalogImportJob.ExecuteJob(Guid jobId)

ASP.NET Identity on Episerver Commerce site

$
0
0

Hello,

I'm struggling quite a bit with trying to understand the documentation and getting ASP.NET Identity to run on a Commerce site. The documentation I'm referring to is mainly these two pages (for CMS and Commerce):

 - http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/9/Security/episerver-aspnetidentity/

 - http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-Commerce/9/Security/aspnet-identity-registrar/

I'm also looking at Quicksilver to get some ideas. Does anyone have a working example using ASP.NET Identity on a Commerce site and can point me in the right direction? Should I look at both of these documents to get ASP.NET Identity up and running or since it's Commerce we're talking about only the second one in the list? 

For instance I'm a bit puzzled about whether to use UserManager or a registered IRegistrar to create an account? When using the IRegistrar as described in the Commerce documentation I get an exception saying "Constructor on type 'EPiServer.Cms.UI.AspNetIdentity.ApplicationUser' not found." so something must be missing there on my side. 

I understand that this questions is a bit fuzzy and a rather big topic but any help is greatly appreciated.

Best regards

/Martin

Catalog PropertyString stored as Longstring in CatalogContentProperty

$
0
0

In our product definition we have multiple fields with [BackingType(typeof(PropertyString))] 
This type of string has a max length of 255

When we look up the value in the database, it is stored in the LongString nvarchar(max) field in the CatalogContentProperty table.
I would expect it to be in the String nvarchar(450) column in this table.

Is it possible to change the behaviour so that short strings will be stored in the String column? 

Viewing all 9642 articles
Browse latest View live


Latest Images