
An awesome multiple award-winning electric enduro bike
An awesome descent, with some high speed ripping at the top, some root drops in the middle, and some great bank turns at the bottom. Fun!
See your customer specific price
Create orders through express buy
Create & save favorite lists
Possible to see your orders & invoices
When you are a customer get all the benefits
Get professional advice
Webshop with your own prices
Error executing template "Designs/Swift/Paragraph/Swift_ProductComponentSlider.cshtml" System.Exception: The Client Secret is expired. Visit the Azure portal to create new keys for your '6945a908-9a4b-44fa-9ced-6fa84bd4a866' app. GetTokenForClientCredentialsFlow failed: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details. Original exception: AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: b3f843fb-df20-4b7c-ae7b-fe7b65320800 Correlation ID: 74d02166-80dc-4d21-924d-c52df2902aaa Timestamp: 2025-07-01 01:22:50Z. Tenant:7dd45d63-24fc-4edd-8ad8-5fd66b6f9733 Client:6945a908-9a4b-44fa-9ced-6fa84bd4a866. ---> MSAL.NetCore.4.61.3.0.MsalServiceException: ErrorCode: invalid_client Microsoft.Identity.Client.MsalServiceException: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details. Original exception: AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: b3f843fb-df20-4b7c-ae7b-fe7b65320800 Correlation ID: 74d02166-80dc-4d21-924d-c52df2902aaa Timestamp: 2025-07-01 01:22:50Z at Microsoft.Identity.Client.OAuth2.OAuth2Client.ThrowServerException(HttpResponse response, RequestContext requestContext) at Microsoft.Identity.Client.OAuth2.OAuth2Client.CreateResponse[T](HttpResponse response, RequestContext requestContext) at Microsoft.Identity.Client.OAuth2.OAuth2Client.ExecuteRequestAsync[T](Uri endPoint, HttpMethod method, RequestContext requestContext, Boolean expectErrorsOn200OK, Boolean addCommonHeaders, Func`2 onBeforePostRequestData) at Microsoft.Identity.Client.OAuth2.TokenClient.SendHttpAndClearTelemetryAsync(String tokenEndpoint, ILoggerAdapter logger) at Microsoft.Identity.Client.OAuth2.TokenClient.SendHttpAndClearTelemetryAsync(String tokenEndpoint, ILoggerAdapter logger) at Microsoft.Identity.Client.OAuth2.TokenClient.SendTokenRequestAsync(IDictionary`2 additionalBodyParameters, String scopeOverride, String tokenEndpointOverride, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.RequestBase.SendTokenRequestAsync(IDictionary`2 additionalBodyParameters, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.ClientCredentialRequest.GetAccessTokenAsync(CancellationToken cancellationToken, ILoggerAdapter logger) at Microsoft.Identity.Client.Internal.Requests.ClientCredentialRequest.ExecuteAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.RequestBase.<>c__DisplayClass11_1.<<RunAsync>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.Identity.Client.Utils.StopwatchService.MeasureCodeBlockAsync(Func`1 codeBlock) at Microsoft.Identity.Client.Internal.Requests.RequestBase.RunAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.ApiConfig.Executors.ConfidentialClientExecutor.ExecuteAsync(AcquireTokenCommonParameters commonParameters, AcquireTokenForClientParameters clientParameters, CancellationToken cancellationToken) StatusCode: 401 ResponseBody: {"error":"invalid_client","error_description":"AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: b3f843fb-df20-4b7c-ae7b-fe7b65320800 Correlation ID: 74d02166-80dc-4d21-924d-c52df2902aaa Timestamp: 2025-07-01 01:22:50Z","error_codes":[7000222],"timestamp":"2025-07-01 01:22:50Z","trace_id":"b3f843fb-df20-4b7c-ae7b-fe7b65320800","correlation_id":"74d02166-80dc-4d21-924d-c52df2902aaa","error_uri":"https://login.microsoftonline.com/error?code=7000222"} Headers: Cache-Control: no-store, no-cache Pragma: no-cache Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" client-request-id: 74d02166-80dc-4d21-924d-c52df2902aaa x-ms-request-id: b3f843fb-df20-4b7c-ae7b-fe7b65320800 x-ms-ests-server: 2.1.21171.3 - SEC ProdSlices x-ms-clitelem: 1,7000222,0,, x-ms-srs: 1.P Content-Security-Policy-Report-Only: object-src 'none'; base-uri 'self'; script-src 'self' 'nonce-2bszg87IwCix3KFqw9y-lw' 'unsafe-inline' 'unsafe-eval' https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com 'report-sample'; report-uri https://csp.microsoft.com/report/ESTS-UX-All X-XSS-Protection: 0 Set-Cookie: fpc=AorE1BWB_8JHhzZfLYvYYzF1fVnmAQAAAGov9d8OAAAA; expires=Thu, 31-Jul-2025 01:22:50 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; path=/; secure; httponly Date: Tue, 01 Jul 2025 01:22:50 GMT --- End of inner exception stack trace --- at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.HandleException(Exception ex, Endpoint endpoint) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 668 at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.GetResponse(Endpoint endpoint, String requestBody, TimeSpan requestTimeout) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 535 at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.Execute(Endpoint endpoint) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 436 at DynamicwebLiveIntegration3.EndpointManager.ExecuteEndpointRequest(String urlSuffix, Object requestBody) at DynamicwebLiveIntegration3.Caching.StockCache.FetchMissing(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(IEnumerable`1 keys) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Caching\ServiceCache.cs:line 267 at Dynamicweb.Caching.ServiceCache`2.GetCache(TKey key) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Caching\ServiceCache.cs:line 254 at DynamicwebLiveIntegration3.LiveIntegrationService.GetStock(ProductStockCacheKey productStockCacheKey, Boolean silent) at DynamicwebLiveIntegration3.Providers.ProductStockProvider.FindStockLevel(Product product, String unitId, StockLocation stockLocation) at Dynamicweb.Ecommerce.Stocks.StockLevelManager.FindStockLevel(Product product, String unitId, StockLocation stockLocation) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Stocks\StockLevelManager.cs:line 25 at Dynamicweb.Ecommerce.Products.ProductExtentions.GetUnitStock(Product product, StockLocation stockLocation, String unitId) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Products\ProductExtentions.cs:line 187 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_1.<BulkCreateView>b__21() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 127 at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) at System.Lazy`1.CreateValue() at System.Lazy`1.get_Value() at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__22() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 128 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelPropertyFiller`1.Fill[S](T model, String propertyName, Func`1 source) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelPropertyFiller.cs:line 49 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.BulkCreateView(ProductViewModelSettings settings, Boolean isRecursive, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 128 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass23_0.<CreateView>b__0() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 602 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelPropertyFiller`1.Fill[S](T model, String propertyName, Func`1 source) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelPropertyFiller.cs:line 49 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductListViewModelSettings settings, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 602 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductListViewModelSettings settings, Group group, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 586 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelFactory.CreateView(ProductListViewModelSettings settings, IList`1 products, Group group) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelFactory.cs:line 197 at Dynamicweb.Ecommerce.Content.Items.Editors.ProductCatalogEditor.GetViewModelValue(Object value) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Content\Items\Editors\ProductCatalogEditor.cs:line 55 at Dynamicweb.Content.Items.Editors.Editor.GetViewModelValue(Object value, ItemField field) in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Content\Items\Editors\Editor.cs:line 99 at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) at System.Lazy`1.CreateValue() at Dynamicweb.Frontend.ItemFieldViewModel.GetValue[T]() in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Frontend\ItemFieldViewModel.cs:line 276 at Dynamicweb.Frontend.ItemViewModel.GetValue[T](String systemName) in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Frontend\ItemViewModel.cs:line 769 at CompiledRazorTemplates.Dynamic.RazorEngine_81785e63b09f46348ee00a649ba7d91b.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 111 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 22 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 694
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Core @using Dynamicweb.Ecommerce.ProductCatalog @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) { var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); if (productList?.Products is object) { product = productList.Products[0]; } } string layout = Model.Item.GetRawValueString("Layout") == "slider" ? "ProductSliderComponent" : "ProductGridComponent"; string lazyHeight = Model.Item.GetBoolean("SetMinHeightForLazyLoading") ? "min-height: 360px" : ""; string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; //Link generation string pageId = Model.Item.GetLink("ProductSliderServicePage") != null ? Model.Item.GetLink("ProductSliderServicePage").PageId.ToString() : ""; string servicePageByNavigationTag = GetPageIdByNavigationTag("ProductSliderService") != 0 ? GetPageIdByNavigationTag("ProductSliderService").ToString() : ""; pageId = pageId == "" ? servicePageByNavigationTag : pageId; string url = "/Default.aspx?ID=" + pageId; if (Pageview.IsVisualEditorMode) { url += "&VisualEdit=True"; } bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); if (isLazyLoadingForProductInfoEnabled) { url += "&getproductinfo=true"; } url += $"&ProductListPartial={layout}"; //Use this to render either a slider or a grid //Source type string sourceType = Model.Item.GetRawValueString("RelationType", "trending"); IList<string> relateFromProductIds = new List<string> { }; IList<string> relateFromProductVariantIds = new List<string> { }; IList<string> relateFromGroupIds = new List<string> { }; bool hasVariants = false; ProductListViewModel relateToViewModel = Model.Item.GetValue<ProductListViewModel>("RelateTo"); //--- PRODUCTS --- if (sourceType == "variants" || sourceType == "frequently" || sourceType == "selected") { if (relateToViewModel?.Products != null) { hasVariants = relateToViewModel.Products.Any(p => !string.IsNullOrEmpty(p.VariantId)); foreach (var fromProduct in relateToViewModel.Products) { if (hasVariants) { if (!string.IsNullOrEmpty(fromProduct.VariantId)) { relateFromProductVariantIds.Add($"{fromProduct.Id} {fromProduct.VariantId}"); } else { relateFromProductVariantIds.Add($"{fromProduct.Id}"); } } relateFromProductIds.Add($"{fromProduct.Id}"); } } } //--- GROUPS --- if (sourceType == "most-sold" || sourceType == "trending" || sourceType == "latest" || sourceType == "custom") { var groupsToRelateTo = Model.Item.GetList("RelateTo")?.GetRawValue().OfType<string>().ToList(); if (groupsToRelateTo != null) { foreach (var fromGroup in groupsToRelateTo) { var groupId = fromGroup.Length > 2 ? fromGroup.Remove(0, 2) : fromGroup; if (!fromGroup.Contains("p_")) { relateFromGroupIds.Add(groupId); } } } if (relateToViewModel?.Products != null) { foreach (var fromProduct in relateToViewModel.Products) { var groupId = fromProduct.PrimaryOrDefaultGroup.Id; relateFromGroupIds.Add(groupId); } } } string relationGroupId = Model.Item.GetRawValueString("RelationGroup", string.Empty); //--- RELATED GROUP --- if (sourceType == "related") { if (relateToViewModel?.Products != null) { product = relateToViewModel.Products.FirstOrDefault(); } if (product?.RelatedGroups != null) { foreach (var relationGroup in product.RelatedGroups) { if (relationGroup.Id == relationGroupId) { hasVariants = relationGroup.Products.Any(p => !string.IsNullOrEmpty(p.VariantId)); foreach (var fromProduct in relationGroup.Products) { if (hasVariants) { if (!string.IsNullOrEmpty(fromProduct.VariantId)) { relateFromProductVariantIds.Add($"{fromProduct.ProductId} {fromProduct.VariantId}"); } else { relateFromProductVariantIds.Add($"{fromProduct.ProductId}"); } } relateFromProductIds.Add($"{fromProduct.ProductId}"); } } } } } //Create group id collection and products id collection strings string productIds = relateFromProductIds.Count > 0 ? string.Join(",", relateFromProductIds) : ""; string productVariantIds = relateFromProductVariantIds.Count > 0 ? string.Join(",", relateFromProductVariantIds) : ""; string groupIds = relateFromGroupIds.Count > 0 ? string.Join(",", relateFromGroupIds) : ""; if (product is object) { if (string.IsNullOrEmpty(productIds) && (sourceType == "variants" || sourceType == "frequently" || sourceType == "selected" || sourceType == "custom")) { productIds = product.Id; } if (string.IsNullOrEmpty(groupIds) && (sourceType == "most-sold" || sourceType == "trending" || sourceType == "latest")) { groupIds = product.PrimaryOrDefaultGroup.Id; } } } @*Container element for the request*@ @if (!string.IsNullOrEmpty(productIds) || !string.IsNullOrEmpty(groupIds) || (string.IsNullOrEmpty(productIds) && string.IsNullOrEmpty(groupIds) && sourceType != "related")) { <form method="post" action="@url" id="ComponentSliderProductsForm_@Model.ID" data-response-target-element="ComponentSliderProducts_@Model.ID" data-preloader="inline" data-update-url="false" class="item_@Model.Item.SystemName.ToLower()"> <input type="hidden" name="ParagraphId" value="@Model.ID" /> <input type="hidden" name="SortOrder" value="DESC"> <input type="hidden" name="SourceType" value="@sourceType"> @if (!string.IsNullOrEmpty(groupIds)) { <input type="hidden" name="GroupId" value="@groupIds"> } @if (sourceType != "frequently" && !string.IsNullOrEmpty(productIds) && !hasVariants) { <input type="hidden" name="MainProductId" value="@productIds"> } @if (sourceType != "frequently" && hasVariants) { <input type="hidden" name="ProductVariantId" value="@productVariantIds"> } @if (Model.Item.GetInt32("ProductsCount") != 0) { <input type="hidden" name="PageSize" value="@Model.Item.GetInt32("ProductsCount")"> } @if (sourceType == "variants") { <input type="hidden" name="isVariant" value="true"> } @if (sourceType == "most-sold") { <input type="hidden" name="SortBy" value="OrderCount"> } @if (sourceType == "trending") { <input type="hidden" name="SortBy" value="OrderCountGrowth"> } @if (sourceType == "frequently" && !string.IsNullOrEmpty(productIds)) { <input type="hidden" name="BoughtWithProductIds" value="[@productIds]"> } @if (sourceType == "latest") { <input type="hidden" name="SortBy" value="Created"> } </form> <script type="module" src="/Files/Templates/Designs/Swift/Assets/js/swiffy-slider.js"></script> <script> window.addEventListener("load", () => { swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/css/swiffy-slider.min.css', 'css'); }); </script> <div class="w-100 h-100@(theme)"> <div id="@Model.ID" class="user-select-none" style="scroll-margin-top:var(--header-height,150px)"></div> <div id="ComponentSliderProducts_@Model.ID" class="h-100" style="@lazyHeight"></div> </div> <script type="module"> const productSliderContainer = document.querySelector("#ComponentSliderProducts_@Model.ID"); const productSliderForm = document.querySelector("#ComponentSliderProductsForm_@Model.ID"); swift.PageUpdater.Update(productSliderForm); productSliderForm.addEventListener("updated.swift.pageupdater", function(e){ if (e.detail.html === "") { productSliderContainer.closest("[data-col-size]").classList.add("d-none"); } }); </script> } else if (Pageview.IsVisualEditorMode == true) { <div class="alert alert-dark" role="alert"> <span>@Translate("Product component slider: The slider will be rendered here, if there is anything to show")</span> </div> }
Innovate and inspire in the cycling world. We are dedicated to crafting high-quality, functional bicycles that cater to riders globally.
Error executing template "Designs/Swift/Paragraph/Swift_ProductComponentSlider.cshtml" System.Exception: The Client Secret is expired. Visit the Azure portal to create new keys for your '6945a908-9a4b-44fa-9ced-6fa84bd4a866' app. GetTokenForClientCredentialsFlow failed: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details. Original exception: AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: 19f18a33-2170-438c-b0d7-2300e19a0600 Correlation ID: 367b214f-e01d-46b3-b356-2bdb1c71ded2 Timestamp: 2025-07-01 01:22:51Z. Tenant:7dd45d63-24fc-4edd-8ad8-5fd66b6f9733 Client:6945a908-9a4b-44fa-9ced-6fa84bd4a866. ---> MSAL.NetCore.4.61.3.0.MsalServiceException: ErrorCode: invalid_client Microsoft.Identity.Client.MsalServiceException: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details. Original exception: AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: 19f18a33-2170-438c-b0d7-2300e19a0600 Correlation ID: 367b214f-e01d-46b3-b356-2bdb1c71ded2 Timestamp: 2025-07-01 01:22:51Z at Microsoft.Identity.Client.OAuth2.OAuth2Client.ThrowServerException(HttpResponse response, RequestContext requestContext) at Microsoft.Identity.Client.OAuth2.OAuth2Client.CreateResponse[T](HttpResponse response, RequestContext requestContext) at Microsoft.Identity.Client.OAuth2.OAuth2Client.ExecuteRequestAsync[T](Uri endPoint, HttpMethod method, RequestContext requestContext, Boolean expectErrorsOn200OK, Boolean addCommonHeaders, Func`2 onBeforePostRequestData) at Microsoft.Identity.Client.OAuth2.TokenClient.SendHttpAndClearTelemetryAsync(String tokenEndpoint, ILoggerAdapter logger) at Microsoft.Identity.Client.OAuth2.TokenClient.SendHttpAndClearTelemetryAsync(String tokenEndpoint, ILoggerAdapter logger) at Microsoft.Identity.Client.OAuth2.TokenClient.SendTokenRequestAsync(IDictionary`2 additionalBodyParameters, String scopeOverride, String tokenEndpointOverride, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.RequestBase.SendTokenRequestAsync(IDictionary`2 additionalBodyParameters, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.ClientCredentialRequest.GetAccessTokenAsync(CancellationToken cancellationToken, ILoggerAdapter logger) at Microsoft.Identity.Client.Internal.Requests.ClientCredentialRequest.ExecuteAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.RequestBase.<>c__DisplayClass11_1.<<RunAsync>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.Identity.Client.Utils.StopwatchService.MeasureCodeBlockAsync(Func`1 codeBlock) at Microsoft.Identity.Client.Internal.Requests.RequestBase.RunAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.ApiConfig.Executors.ConfidentialClientExecutor.ExecuteAsync(AcquireTokenCommonParameters commonParameters, AcquireTokenForClientParameters clientParameters, CancellationToken cancellationToken) StatusCode: 401 ResponseBody: {"error":"invalid_client","error_description":"AADSTS7000222: The provided client secret keys for app '6945a908-9a4b-44fa-9ced-6fa84bd4a866' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: 19f18a33-2170-438c-b0d7-2300e19a0600 Correlation ID: 367b214f-e01d-46b3-b356-2bdb1c71ded2 Timestamp: 2025-07-01 01:22:51Z","error_codes":[7000222],"timestamp":"2025-07-01 01:22:51Z","trace_id":"19f18a33-2170-438c-b0d7-2300e19a0600","correlation_id":"367b214f-e01d-46b3-b356-2bdb1c71ded2","error_uri":"https://login.microsoftonline.com/error?code=7000222"} Headers: Cache-Control: no-store, no-cache Pragma: no-cache Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" client-request-id: 367b214f-e01d-46b3-b356-2bdb1c71ded2 x-ms-request-id: 19f18a33-2170-438c-b0d7-2300e19a0600 x-ms-ests-server: 2.1.21171.3 - FRC ProdSlices x-ms-clitelem: 1,7000222,0,, x-ms-srs: 1.P Content-Security-Policy-Report-Only: object-src 'none'; base-uri 'self'; script-src 'self' 'nonce-9MJ_JBAkdLh1g8uF_lvCUQ' 'unsafe-inline' 'unsafe-eval' https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com 'report-sample'; report-uri https://csp.microsoft.com/report/ESTS-UX-All X-XSS-Protection: 0 Set-Cookie: fpc=AorE1BWB_8JHhzZfLYvYYzF1fVnmAgAAAGov9d8OAAAA; expires=Thu, 31-Jul-2025 01:22:51 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; path=/; secure; httponly Date: Tue, 01 Jul 2025 01:22:50 GMT --- End of inner exception stack trace --- at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.HandleException(Exception ex, Endpoint endpoint) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 668 at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.GetResponse(Endpoint endpoint, String requestBody, TimeSpan requestTimeout) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 535 at Dynamicweb.DataIntegration.EndpointManagement.EndpointService.Execute(Endpoint endpoint) in C:\Work\Repos\Dynamicweb10\src\Features\DataIntegration\Dynamicweb.DataIntegration\EndpointManagement\EndpointService.cs:line 436 at DynamicwebLiveIntegration3.EndpointManager.ExecuteEndpointRequest(String urlSuffix, Object requestBody) at DynamicwebLiveIntegration3.Caching.StockCache.FetchMissing(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(IEnumerable`1 keys) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Caching\ServiceCache.cs:line 267 at Dynamicweb.Caching.ServiceCache`2.GetCache(TKey key) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Caching\ServiceCache.cs:line 254 at DynamicwebLiveIntegration3.LiveIntegrationService.GetStock(ProductStockCacheKey productStockCacheKey, Boolean silent) at DynamicwebLiveIntegration3.Providers.ProductStockProvider.FindStockLevel(Product product, String unitId, StockLocation stockLocation) at Dynamicweb.Ecommerce.Stocks.StockLevelManager.FindStockLevel(Product product, String unitId, StockLocation stockLocation) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Stocks\StockLevelManager.cs:line 25 at Dynamicweb.Ecommerce.Products.ProductExtentions.GetUnitStock(Product product, StockLocation stockLocation, String unitId) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Products\ProductExtentions.cs:line 187 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_1.<BulkCreateView>b__21() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 127 at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) at System.Lazy`1.CreateValue() at System.Lazy`1.get_Value() at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__22() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 128 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelPropertyFiller`1.Fill[S](T model, String propertyName, Func`1 source) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelPropertyFiller.cs:line 49 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.BulkCreateView(ProductViewModelSettings settings, Boolean isRecursive, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 128 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass23_0.<CreateView>b__0() in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 602 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelPropertyFiller`1.Fill[S](T model, String propertyName, Func`1 source) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelPropertyFiller.cs:line 49 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductListViewModelSettings settings, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 602 at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductListViewModelSettings settings, Group group, IList`1 products) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewEngine.cs:line 586 at Dynamicweb.Ecommerce.ProductCatalog.ViewModelFactory.CreateView(ProductListViewModelSettings settings, IList`1 products, Group group) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\ProductCatalog\ViewModelFactory.cs:line 197 at Dynamicweb.Ecommerce.Content.Items.Editors.ProductCatalogEditor.GetViewModelValue(Object value) in C:\Work\Repos\Dynamicweb10\src\Features\Ecommerce\Dynamicweb.Ecommerce\Content\Items\Editors\ProductCatalogEditor.cs:line 55 at Dynamicweb.Content.Items.Editors.Editor.GetViewModelValue(Object value, ItemField field) in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Content\Items\Editors\Editor.cs:line 99 at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) at System.Lazy`1.CreateValue() at Dynamicweb.Frontend.ItemFieldViewModel.GetValue[T]() in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Frontend\ItemFieldViewModel.cs:line 276 at Dynamicweb.Frontend.ItemViewModel.GetValue[T](String systemName) in C:\Work\Repos\Dynamicweb10\src\Features\Content\Dynamicweb\Frontend\ItemViewModel.cs:line 769 at CompiledRazorTemplates.Dynamic.RazorEngine_81785e63b09f46348ee00a649ba7d91b.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 100 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 22 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in C:\Work\Repos\Dynamicweb10\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 694
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Core @using Dynamicweb.Ecommerce.ProductCatalog @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) { var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); if (productList?.Products is object) { product = productList.Products[0]; } } string layout = Model.Item.GetRawValueString("Layout") == "slider" ? "ProductSliderComponent" : "ProductGridComponent"; string lazyHeight = Model.Item.GetBoolean("SetMinHeightForLazyLoading") ? "min-height: 360px" : ""; string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; //Link generation string pageId = Model.Item.GetLink("ProductSliderServicePage") != null ? Model.Item.GetLink("ProductSliderServicePage").PageId.ToString() : ""; string servicePageByNavigationTag = GetPageIdByNavigationTag("ProductSliderService") != 0 ? GetPageIdByNavigationTag("ProductSliderService").ToString() : ""; pageId = pageId == "" ? servicePageByNavigationTag : pageId; string url = "/Default.aspx?ID=" + pageId; if (Pageview.IsVisualEditorMode) { url += "&VisualEdit=True"; } bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); if (isLazyLoadingForProductInfoEnabled) { url += "&getproductinfo=true"; } url += $"&ProductListPartial={layout}"; //Use this to render either a slider or a grid //Source type string sourceType = Model.Item.GetRawValueString("RelationType", "trending"); IList<string> relateFromProductIds = new List<string> { }; IList<string> relateFromProductVariantIds = new List<string> { }; IList<string> relateFromGroupIds = new List<string> { }; bool hasVariants = false; ProductListViewModel relateToViewModel = Model.Item.GetValue<ProductListViewModel>("RelateTo"); //--- PRODUCTS --- if (sourceType == "variants" || sourceType == "frequently" || sourceType == "selected") { if (relateToViewModel?.Products != null) { hasVariants = relateToViewModel.Products.Any(p => !string.IsNullOrEmpty(p.VariantId)); foreach (var fromProduct in relateToViewModel.Products) { if (hasVariants) { if (!string.IsNullOrEmpty(fromProduct.VariantId)) { relateFromProductVariantIds.Add($"{fromProduct.Id} {fromProduct.VariantId}"); } else { relateFromProductVariantIds.Add($"{fromProduct.Id}"); } } relateFromProductIds.Add($"{fromProduct.Id}"); } } } //--- GROUPS --- if (sourceType == "most-sold" || sourceType == "trending" || sourceType == "latest" || sourceType == "custom") { var groupsToRelateTo = Model.Item.GetList("RelateTo")?.GetRawValue().OfType<string>().ToList(); if (groupsToRelateTo != null) { foreach (var fromGroup in groupsToRelateTo) { var groupId = fromGroup.Length > 2 ? fromGroup.Remove(0, 2) : fromGroup; if (!fromGroup.Contains("p_")) { relateFromGroupIds.Add(groupId); } } } if (relateToViewModel?.Products != null) { foreach (var fromProduct in relateToViewModel.Products) { var groupId = fromProduct.PrimaryOrDefaultGroup.Id; relateFromGroupIds.Add(groupId); } } } string relationGroupId = Model.Item.GetRawValueString("RelationGroup", string.Empty); //--- RELATED GROUP --- if (sourceType == "related") { if (relateToViewModel?.Products != null) { product = relateToViewModel.Products.FirstOrDefault(); } if (product?.RelatedGroups != null) { foreach (var relationGroup in product.RelatedGroups) { if (relationGroup.Id == relationGroupId) { hasVariants = relationGroup.Products.Any(p => !string.IsNullOrEmpty(p.VariantId)); foreach (var fromProduct in relationGroup.Products) { if (hasVariants) { if (!string.IsNullOrEmpty(fromProduct.VariantId)) { relateFromProductVariantIds.Add($"{fromProduct.ProductId} {fromProduct.VariantId}"); } else { relateFromProductVariantIds.Add($"{fromProduct.ProductId}"); } } relateFromProductIds.Add($"{fromProduct.ProductId}"); } } } } } //Create group id collection and products id collection strings string productIds = relateFromProductIds.Count > 0 ? string.Join(",", relateFromProductIds) : ""; string productVariantIds = relateFromProductVariantIds.Count > 0 ? string.Join(",", relateFromProductVariantIds) : ""; string groupIds = relateFromGroupIds.Count > 0 ? string.Join(",", relateFromGroupIds) : ""; if (product is object) { if (string.IsNullOrEmpty(productIds) && (sourceType == "variants" || sourceType == "frequently" || sourceType == "selected" || sourceType == "custom")) { productIds = product.Id; } if (string.IsNullOrEmpty(groupIds) && (sourceType == "most-sold" || sourceType == "trending" || sourceType == "latest")) { groupIds = product.PrimaryOrDefaultGroup.Id; } } } @*Container element for the request*@ @if (!string.IsNullOrEmpty(productIds) || !string.IsNullOrEmpty(groupIds) || (string.IsNullOrEmpty(productIds) && string.IsNullOrEmpty(groupIds) && sourceType != "related")) { <form method="post" action="@url" id="ComponentSliderProductsForm_@Model.ID" data-response-target-element="ComponentSliderProducts_@Model.ID" data-preloader="inline" data-update-url="false" class="item_@Model.Item.SystemName.ToLower()"> <input type="hidden" name="ParagraphId" value="@Model.ID" /> <input type="hidden" name="SortOrder" value="DESC"> <input type="hidden" name="SourceType" value="@sourceType"> @if (!string.IsNullOrEmpty(groupIds)) { <input type="hidden" name="GroupId" value="@groupIds"> } @if (sourceType != "frequently" && !string.IsNullOrEmpty(productIds) && !hasVariants) { <input type="hidden" name="MainProductId" value="@productIds"> } @if (sourceType != "frequently" && hasVariants) { <input type="hidden" name="ProductVariantId" value="@productVariantIds"> } @if (Model.Item.GetInt32("ProductsCount") != 0) { <input type="hidden" name="PageSize" value="@Model.Item.GetInt32("ProductsCount")"> } @if (sourceType == "variants") { <input type="hidden" name="isVariant" value="true"> } @if (sourceType == "most-sold") { <input type="hidden" name="SortBy" value="OrderCount"> } @if (sourceType == "trending") { <input type="hidden" name="SortBy" value="OrderCountGrowth"> } @if (sourceType == "frequently" && !string.IsNullOrEmpty(productIds)) { <input type="hidden" name="BoughtWithProductIds" value="[@productIds]"> } @if (sourceType == "latest") { <input type="hidden" name="SortBy" value="Created"> } </form> <script type="module" src="/Files/Templates/Designs/Swift/Assets/js/swiffy-slider.js"></script> <script> window.addEventListener("load", () => { swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/css/swiffy-slider.min.css', 'css'); }); </script> <div class="w-100 h-100@(theme)"> <div id="@Model.ID" class="user-select-none" style="scroll-margin-top:var(--header-height,150px)"></div> <div id="ComponentSliderProducts_@Model.ID" class="h-100" style="@lazyHeight"></div> </div> <script type="module"> const productSliderContainer = document.querySelector("#ComponentSliderProducts_@Model.ID"); const productSliderForm = document.querySelector("#ComponentSliderProductsForm_@Model.ID"); swift.PageUpdater.Update(productSliderForm); productSliderForm.addEventListener("updated.swift.pageupdater", function(e){ if (e.detail.html === "") { productSliderContainer.closest("[data-col-size]").classList.add("d-none"); } }); </script> } else if (Pageview.IsVisualEditorMode == true) { <div class="alert alert-dark" role="alert"> <span>@Translate("Product component slider: The slider will be rendered here, if there is anything to show")</span> </div> }
Our shop provides a variety of products and bicyle parts, to realize a healty and fit body