升级到Visual Studio 2015后,我在Windows服务中托管的AppFabric客户端不再启动。当服务启动并且工厂封装在Cache单例类中时,DataCacheFactory构造函数抛出异常。这是例外。
8/4/2015 9:51:47 PM服务启动错误: System.TypeInitializationException:类型初始值设定项 ' ioService.IoService'抛出一个例外。 ---> Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode:SubStatus:暂时失败。 请稍后重试。 (一个或多个指定的缓存服务器是 不可用,这可能是由繁忙的网络或服务器引起的。确保 已为此客户帐户授予安全权限 群集和允许AppFabric缓存服务通过 所有缓存主机上的防火墙。稍后重试。)at Microsoft.ApplicationServer.Caching.ClientDRM.InitializeCasClient(字符串 id,TimeSpan chnlOpenTimeout)at Microsoft.ApplicationServer.Caching.DataCacheFactory.InitDrm()at Microsoft.ApplicationServer.Caching.DataCacheFactory..ctor(DataCacheFactoryConfiguration 配置)在ioService.Cache..ctor()
当旧的Visual Studio 2013生成的程序集重新启动时,它会再次启动,而不是一行代码就不同!! 只需仔细检查,配置文件也完全一样。
我真的不知道该怎么做了,因为关于appfabric的信息不是呃.......我可以在这里问这个问题。有没有人经历过同样的事情?
这是代码,如果有帮助:
internal class Cache
{
private static volatile Cache mCache = null;
private static object SyncRoot = new object();
private DataCache mArticleCache;
// FAULTING INSIDE CONSTRUCTOR...
private DataCacheFactory mCacheFactory = new DataCacheFactory();
public static Cache Instance
{
get
{
if (mCache == null)
{
lock (SyncRoot)
{
if (mCache == null) // search DCLP for why 2x if
mCache = new Cache();
}
}
return mCache;
}
}
public DataCache ArticleCache
{
get { return mArticleCache; }
}
private Cache()
{
mArticleCache = mCacheFactory.GetCache(ConfigurationManager.AppSettings["Cache.ArticleCacheName"]);
try
{
mArticleCache.CreateRegion(ConfigurationManager.AppSettings["Cache.ArticleRegionName"]);
}
catch (DataCacheException dcex)
{
if (dcex.ErrorCode != DataCacheErrorCode.RegionAlreadyExists)
throw dcex;
}
}
}
更新 在appfabric服务级别启用跟踪后,Microsoft服务跟踪查看器显示以下错误:
maxOutboundConnectionsPerEndpoint可能太低了。如何在AppFabric中更改此数字?
更新2
项目文件不同。这是appfabric的旧部分
<Reference Include="Microsoft.ApplicationServer.Caching.Client">
<HintPath>..\..\..\..\temp\AppFabric\Microsoft.ApplicationServer.Caching.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationServer.Caching.Core">
<HintPath>..\..\..\..\temp\AppFabric\Microsoft.ApplicationServer.Caching.Core.dll</HintPath>
</Reference>
新部分
<Reference Include="Microsoft.ApplicationServer.Caching.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\temp\AppFabric\Microsoft.ApplicationServer.Caching.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\temp\AppFabric\Microsoft.ApplicationServer.Caching.Core.dll</HintPath>
</Reference>
现在包含版本和publickeytoken,并添加了SpecificVersion false标记。