Today I want to share with you an solution for very unclear error which can occurs when we use Web Forms For Marketers in multisite solution.
You will see this error inside Experience Editor when you will be able to select forms:
Regarding to Sitecore documentation if you will add “formsRoot” parameter to the “site” node in configuration file – you will be able to define different forms root for every page.
But what will happen if ID which you will define will not exist in content tree or you will make a typo and it will not be properly ID? You will see following error:
Index (zero based) must be greater than or equal to zero and less than the size of the argument list. 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.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list. 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: [FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.] System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) +14649723 System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) +105 System.String.Format(String format, Object[] args) +103 Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateCommand(String sql, Object[] parameters) +189 Sitecore.Data.DataProviders.Sql.<>c__DisplayClass12.b__10() +30 Sitecore.Data.DataProviders.NullRetryer.Execute(Func`1 action, Action recover) +286 Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateReader(String sql, Object[] parameters) +281 Sitecore.Data.DataProviders.Sql.SqlDataProvider.ResolvePaths(String itemPath) +406 Sitecore.Data.DataProviders.Sql.SqlDataProvider.SelectSingleID(String query, CallContext context) +126 Sitecore.Data.DataProviders.DataProvider.SelectSingleID(String query, CallContext context, DataProviderCollection providers) +118 Sitecore.Data.DataManager.SelectSingleItem(String query, Boolean& processed) +66 Sitecore.Data.DefaultDatabase.SelectSingleItem(String query) +74 Sitecore.Form.Core.Utility.SiteUtils.GetFormsSites() +620 Sitecore.Form.Core.Utility.Utils.GetFormRoots() +138 Sitecore.Forms.Shell.UI.CreateFormWizard.OnLoad(EventArgs e) +1109 Sitecore.Forms.Shell.UI.InsertFormWizard.OnLoad(EventArgs e) +99 [TargetInvocationException: Exception has been thrown by the target of an invocation.] System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +128 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +146 Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +89 Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +593 System.Web.UI.Control.LoadRecursive() +68 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3811
Do not loose your time for debugging – just check IDs for ALL sites – it is not important which site you are editing at the moment.
You can have there typo or root item does not exist in content tree. You have to verify all sites because during opening InsertFormWizard control – WFFM loads all configuration nodes.