Question

I am trying to create an AppFabric cache client which is a console application. But receives the error Error in client configuration file while creating new instance of DataCacheFactory.
Connection settings are provided in App.Config file as described in msdn.
Code

static void Main(string[] args)
{
  try
  {
    DataCacheFactory dFact = new DataCacheFactory();
    DataCache myCache = dFact.GetCache("default");

    myCache.Remove("pValue");
    myCache.Add("pValue", "Test Cache Value");
    Console.WriteLine(string.Format("{0}", "Added to cache. Press any key to read...."));
    Console.ReadLine();
    Console.WriteLine(string.Format("{0}", myCache.Get("pValue").ToString()));
    Console.ReadLine();
  }
  catch (Exception Ex)
  {
    throw new System.Exception(Ex.ToString());
  }

}

}
App.Config file

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

<configSections>
<section name="dataCacheClient"
 type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
 Microsoft.ApplicationServer.Caching.Core,Version=1.0.0.0,Culture=neutral,
 PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere" />
 </configSections>
 <dataCacheClient>
 <hosts>
  <host  name="localhost" cachePort="22233"/>
 </hosts>
 </dataCacheClient>
</configuration>


Exception

Microsoft.ApplicationServer.Caching.DataCacheException:
ErrorCode<ERRCMC0003>:SubStatus<ES0001>:Error in client configuration file. --->
System.Configuration.ConfigurationErrorsException: Configuration system failed to
initialize ---> 
System.Configuration.ConfigurationErrorsException: 
Only one  <configSections> element allowed per config file 
and if present must be the first child of the root <configuration> element.
(DistributedInMemory.vshost.exe.Config line 7) 
at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at
System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
--- End of inner exception stack trace ---

at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
at
 System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at Microsoft.ApplicationServer.Caching.ClientConfigReader..ctor()
at Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration.Initialize(String path)
--- End of inner exception stack trace ---

at Microsoft.ApplicationServer.Caching.ConfigFile.ThrowException(Int32 errorCode, Exception e) 
at Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration.Initialize(String path)
at Microsoft.ApplicationServer.Caching.DataCacheFactory..ctor()
at DistributedInMemory.Program.Main(String[] args) in DistributedInMemory\Program.cs:line 16


Any idea why this error happening....Thanks.

Était-ce utile?

La solution

You need to put the configSections element immediately after configuration element.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- Put config sections here -->
  <configSections>
    <!-- Put dataCache client section first -->
    <section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere" />
    <!-- Then other sections... -->
  </configSections>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top