Google Analytics

Search This Blog

Friday, August 22, 2014

Culture ID 17417 (0x4409) is not a supported culture (VB.NET Remoting)

This exception happened to a deployment of client server application (build on .NET Remoting) with the following details:

Server PC:
  • Windows Server Standard Service Pack 2
  • Regional and Language Options: Formats: English (Malaysia)

Client PC:
  • Windows XP 2002 Service Pack 3
  • Regional and Language Options: Formats: English (United States)



Here is the thing.

The exception was generated at client's side when it was invoking a remote call by passing in a string parameter using BinaryFormatter.

Culture ID 17417 is referring to Formats: English (Malaysia).

Therefore, it happens because Windows XP 2002 Service Pack 3 does not support Formats: English (Malaysia).
Windows XP 2002 Service Pack 3 does not support English (Malaysia)

Hence, when it was trying to perform the remote call where the server uses Formats: English (Malaysia), the exception was generated.

The solution (for this case) is to set change the server to use Formats: English (United States). Otherwise, set both PCs to use the same Regional and Language Options: Formats.

There could be other ways to resolve this issue.

 System.ArgumentException: Culture ID 17417 (0x4409) is not a supported culture.  
 Parameter name: culture  
 Server stack trace:   
   at System.Globalization.CultureInfo.GetCultureInfo(Int32 culture)  
   at System.Globalization.CompareInfo.GetSortingLCID(Int32 culture)  
   at System.Globalization.CompareInfo.OnDeserialized()  
   at System.Globalization.CompareInfo.OnDeserialized(StreamingContext ctx)  
   at System.Runtime.Serialization.SerializationEvents.InvokeOnDeserialized(Object obj, StreamingContext context)  
   at System.Runtime.Serialization.ObjectManager.RaiseOnDeserializedEvent(Object obj)  
   at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)  
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)  
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)  
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Parse(ParseRecord pr)  
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()  
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)  
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)  
   at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)  
   at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.DeserializeMessage(IMethodCallMessage mcm, ITransportHeaders headers, Stream stream)  
   at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)  
 Exception rethrown at [0]:   
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)  
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)  
   at SVACS_v2_2.clsAppRemManager.GetItemFromCLDevQ_1(String CLID)  
   at SVACS_v2_2.FrmModBusASCII_2.CLPullLiveDataTimerTask_1_SubProc_1()  
 @Mod_GlobFunc.ProcessGenException  

No comments: