我正在尝试创建一个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
任何想法为什么会发生这种错误....谢谢。
答案 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>