客户端配置文件出错

时间:2013-05-02 07:51:14

标签: c# .net caching appfabric

我正在尝试创建一个AppFabric缓存客户端,它是一个控制台应用程序。但在创建DataCacheFactory的新实例时收到错误客户端配置文件错误。
连接设置在App.Config文件中提供,如msdn中所述。

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文件

<?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>


异常

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


任何想法为什么会发生这种错误....谢谢。

1 个答案:

答案 0 :(得分:10)

您需要在配置元素之后立即放置configSections元素。

<?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>
相关问题