We have had several clients report random errors occurring in their SalesLogix v8.0 web client. No meaningful error is presented to the end user but on the web server's Event Logs you can see something similar to this:
Normal 0 false false false EN-US ZH-TW X-NONE
2013-12-05 08:15:36,025 [23] ERROR SlxClient.InsertSalesOrderPage - SalesLogix Web Client unhandled exception during async postback [SalesLogix Error Id=SLX76DA70529671C361]
{
"slxErrorId": "SLX76DA70529671C361",
"mitigation": "AjaxErrorResponse (576)",
"date": "2013-12-05T08:15:36",
"utc": "2013-12-05T16:15:36",
"message": "Could not find the dynamic method BillToShipTo.lstbxShippingAddress_OnChange. Check your dynamicmethods.xml configuration file to ensure that this method exists.",
"source":"Sage.Platform.DynamicMethod.DynamicMethodLibrary, Sage.Platform, Version=8.0.0.8494, Culture=neutral, PublicKeyToken=null",
"type": "System.ArgumentException",
"stackTrace": " at Sage.Platform.DynamicMethod.DynamicMethodLibrary.GetInvoker(String methodName)\r\n at Sage.Platform.DynamicMethod.DynamicMethodLibrary.Execute(String methodName, Object[] args)\r\n at
This error references the DynamicMethodLibrary. This library gets its data from the DynamicMethods.xml file in the root of the SalesLogix client's deployed portal location. This file is created dynamically by the Application Architect during the build and deploy process. The file contains all of the C# methods on the various smart parts in the web client.
If you look at a properly formed line in this file it will look something like this:
<dynamicMethod xsi:type="BusinessRuleMethod" methodName="BillToShipTo.lstbxBillingAddress_OnChange" methodReturnMode="None" returnType="System.Void">
<preExecuteTargets />
<primaryTarget targetType="Sage.BusinessRules.CodeSnippets.BillToShipToEventHandlers, Sage.SnippetLibrary.CSharp" targetMethod="lstbxBillingAddress_OnChangeStep" />
<postExecuteTargets />
</dynamicMethod>
However an incorrect one will look something like this:
<dynamicMethod xsi:type="BusinessRuleMethod" methodName="6fbf306a-9ee2-4ed4-a0e5-985babe54703.lstbxShippingAddress_OnChange" methodReturnMode="None" returnType="System.Void">
<preExecuteTargets />
<primaryTarget targetType="Sage.BusinessRules.CodeSnippets.BillToShipToEventHandlers, Sage.SnippetLibrary.CSharp" targetMethod="lstbxShippingAddress_OnChange" />
<postExecuteTargets />
</dynamicMethod>
Note how a GUID appears instead (shown highlighted above).
To fix this you have one of two options:
- Modify the offending code snippet. You can just add a space or something to modify it. Do a full build and re-deploy. Before deploying, delete the DyanmicMethods.xml file from the portal deployment location to ensure it is replaced. This is often enough to fix the issue.
- Modify the deployed DyanmicMethods.xml file directly and change the GUID to the correct value. You will need to do an IIS reset afterwards.