Error executing template "Designs/Swift/UserManagement/Login/Login.cshtml"
System.UriFormatException: Invalid URI: The URI is empty.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
   at System.Uri..ctor(String uriString)
   at CompiledRazorTemplates.Dynamic.RazorEngine_201231b9b4064250888c0956452a9bee.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)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb 3 @using Dynamicweb.Environment 4 @using System.Globalization 5 @using Microsoft.AspNetCore.WebUtilities 6 7 @{ 8 string pageTitle = Pageview.Page.GetDisplayName(); 9 string pageId = GetGlobalValue("Global:Page.ID"); 10 int signInProfilePageId = Pageview.Page.ID; 11 string currentUserId = GetGlobalValue("Global:Extranet.UserID"); 12 string goBackToPage = Dynamicweb.Context.Current.Request.GetString("GoBackToPage"); //parameter from anonymous checkout 13 string absoluteUri = Dynamicweb.Context.Current?.Request?.UrlReferrer?.AbsoluteUri != null ? Dynamicweb.Context.Current.Request.UrlReferrer.AbsoluteUri : ""; 14 15 // Custom: Logik som fjerner CurrencyCode fra action i form 16 17 var uri = new Uri(absoluteUri); 18 19 // 1) Sti uden query 20 var basePath = uri.GetLeftPart(UriPartial.Path); 21 22 // 2) Parse query-parametre 23 var parameters = QueryHelpers.ParseQuery(uri.Query); 24 25 // 3) Fjern CurrencyCode 26 parameters.Remove("CurrencyCode"); 27 28 // 4) Genopbyg query-streng 29 string newQuery = string.Join("&", 30 parameters.SelectMany(kvp => kvp.Value, (kvp, value) => 31 $"{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(value)}" 32 ) 33 ); 34 35 // 5) Sammensæt ny URL 36 string cleanedUrl = string.IsNullOrEmpty(newQuery) 37 ? basePath 38 : $"{basePath}?{newQuery}"; 39 40 absoluteUri = cleanedUrl; 41 42 string redirectPage = !string.IsNullOrEmpty(goBackToPage) ? "Default.aspx?Id=" + goBackToPage : absoluteUri; 43 redirectPage = string.IsNullOrEmpty(goBackToPage) && !string.IsNullOrEmpty(GetString("UserManagement:User.Login.SuccessRedirectToPage")) ? GetString("UserManagement:User.Login.SuccessRedirectToPage") : redirectPage; 44 45 string createAccountPageLink = Pageview.CurrentParagraph.Item["CreateAccountPage"] != null ? Pageview.CurrentParagraph.Item["CreateAccountPage"].ToString() : ""; 46 47 string contentPadding = Pageview.CurrentParagraph.Item["ContentPadding"] != null ? Pageview.CurrentParagraph.Item["ContentPadding"].ToString() : ""; 48 contentPadding = contentPadding == "none" ? "px-0" : contentPadding; 49 contentPadding = contentPadding == "small" ? "p-2 p-md-3" : contentPadding; 50 contentPadding = contentPadding == "large" ? "p-4 p-md-5" : contentPadding; 51 var themeRaw = Pageview.CurrentParagraph.Item["Theme"]?.ToString(); 52 string theme = !string.IsNullOrEmpty(themeRaw) ? " theme " + themeRaw.Replace(" ", "").Trim().ToLower() : " theme light"; 53 54 var loginProvider = GetLoop("DWExtranetExternalLoginProviders"); 55 } 56 57 <div class="@(contentPadding)"> 58 59 @if (Pageview.Area.CultureInfo.TwoLetterISOLanguageName == "da" && !string.IsNullOrEmpty(GetString($"DW_extranet_error_dk"))) 60 { 61 <div class="alert alert-danger" role="alert"> 62 @GetString($"DW_extranet_error_dk") 63 </div> 64 } 65 else if (!string.IsNullOrEmpty(GetString("DW_extranet_error_uk"))) 66 { 67 <div class="alert alert-danger" role="alert"> 68 @GetString($"DW_extranet_error_uk") 69 </div> 70 } 71 72 <div class="card border-0@(theme) mx-auto" style="max-width: 30rem;"> 73 74 <div class="card-header text-center p-4 border-bottom"> 75 <h4 class="display-6 m-0">@pageTitle</h4> 76 @if (!string.IsNullOrEmpty(createAccountPageLink)) 77 { 78 <p class="card-text mt-2">@Translate("Don't have an account yet?") <a href="@createAccountPageLink">@Translate("Create account here")</a></p> 79 } 80 </div> 81 82 <div class="card-body p-4"> 83 <form class="grid grid-1 gap-4" method="post"> 84 <input type="hidden" name="ID" value="@pageId"> 85 <input type="hidden" name="DWExtranetUsernameRemember" value="True"> 86 <input type="hidden" name="DWExtranetPasswordRemember" value="True"> 87 <input type="hidden" name="GoBackToPage" value="@goBackToPage"> 88 <input type="hidden" name="LoginAction" value="Login"> 89 90 @if (!Convert.ToBoolean(Pageview.CurrentParagraph.Item["EnableUserStartPageRedirect"])) { 91 <input type="hidden" name="redirect" value="@redirectPage"> 92 } 93 94 @foreach(LoopItem provider in loginProvider) 95 { 96 string iconPath = "/Files/IconsLoginProviders/"; 97 string providerName = provider.GetString("ProviderName").ToLower(); 98 string providerIcon = string.Empty; 99 100 if(providerName.Contains("azure")) 101 { 102 providerIcon = "azure"; 103 } 104 if(providerName.Contains("google")) 105 { 106 providerIcon = "google"; 107 } 108 109 <div class="d-grid"> 110 <a class="btn btn-primary-outline btn-lg" href="/Admin/Public/Social/ExternalLogin.aspx?action=login&providerID=@provider.GetValue("ProviderID")"> 111 <span class="d-flex justify-content-center align-items-center"> 112 <span class="icon-3 me-2"> 113 @ReadFile(iconPath + providerIcon + ".svg") 114 </span> 115 <span>@Translate("Sign in with") @provider.GetString("ProviderName")</span> 116 </span> 117 </a> 118 </div> 119 120 <div class="d-flex align-items-center gap-3"> 121 <span class="border-top flex-fill"></span> 122 <span class="text-uppercase">@Translate("or")</span> 123 <span class="border-top flex-fill"></span> 124 </div> 125 } 126 127 <div> 128 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your email")</div> 129 <div class="form-floating"> 130 <input type="text" class="form-control" id="login-username" name="username" placeholder="@Translate("Email")" required> 131 <label for="login-username">@Translate("Email")</label> 132 </div> 133 134 </div> 135 136 <div> 137 <div class="d-flex justify-content-between align-items-center"> 138 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your password")</div> 139 <a tabindex="-1" class="form-label-link" href="/Default.aspx?id=@(signInProfilePageId)&LoginAction=Recovery" id="ForgotPasswordButton">@Translate("Forgot password?")</a> 140 </div> 141 142 <div class="form-floating"> 143 <input type="password" class="form-control" id="LoginPassword" name="password" placeholder="@Translate("Password")" required> 144 <label for="LoginPassword">@Translate("Password")</label> 145 </div> 146 </div> 147 148 <div class="form-check"> 149 <input class="form-check-input" type="checkbox" value="True" name="Autologin" id="RememberMe"> 150 <label class="form-check-label" for="RememberMe">@Translate("Keep me signed in")</label> 151 </div> 152 153 <div class="d-grid"> 154 <button type="submit" class="btn btn-primary btn-lg" id="SignInButton">@Translate("Sign in")</button> 155 </div> 156 </form> 157 </div> 158 </div> 159 </div> 160 161
By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing