无法在调试中创建 DataCacheFactory 实例
Unable to create DataCacheFactory instance in debug
- 我正在开发将 运行 在 Windows Azure Web 角色上的 Web 项目;
- 云端会有2个角色实例;
- 我正在使用分布在 2 个角色实例之间的并置命名缓存(角色内缓存);
- 在本地,我使用单个实例进行调试;
- 云端缓存客户端创建成功,运行流畅;
- 在本地调试时,我无法创建DataCacheFactory 的实例,因为当调用构造函数时,程序流"stops" 并没有继续执行下面的语句。也不例外!
这是我创建工厂和缓存客户端的代码:
var cacheFactoryConfig = new DataCacheFactoryConfiguration
{
ChannelOpenTimeout = TimeSpan.FromMinutes(2),
TransportProperties = {ReceiveTimeout = TimeSpan.FromSeconds(45)}
};
DataCacheFactory cacheFactory;
try
{
cacheFactory = new DataCacheFactory(cacheFactoryConfig);// <--stops here
}
catch (Exception e)
{
Trace.WriteLine(string.Format("--> Message-> {0}; --> Stack Trace->{1}", e.Message, e.StackTrace));
throw;
}
cacheClient = cacheFactory.GetDefaultCache();
服务配置:
在 web.config 中缓存客户端和服务器配置
如果需要,我会提供任何其他信息以便尽快解决问题。
-----编辑 1-----------------
由于相关 post Making Windows Azure Caching Work in Compute Emulator 我必须添加一些信息:
- 操作系统 -> Windows 7 Professional
- IDE -> Visual Studio 2013 终极更新 4
- Windows Azure 缓存包 2.4.0.0
- Windows Azure SDK 版本 2.4
我没有安装 Windows Server AppFabric,所以我要安装它!
经过几天的调查,我设法解决了问题并成功创建了 DataCacheFactory 和 DataCache 等实例。在以下 2 个帖子:
中描述并解决了该问题
http://blog.elastacloud.com/2012/06/09/using-the-windows-azure-cache-preview-with-sdk-1-7/
- 在我的例子中,我安装了 Microsoft Server AppFabric,所以我删除了它。
- 以防万一,我删除了所有可用的 Windows Azure SDK(已安装 2.4)和
所有与 Azure 缓存相关的旧 nuget 包。
- 我确实确认所有程序集也已从 GAC 中删除。
- 在 "cleaning" 之后,我再次安装最新的 Azure SDK 2.5。 http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-in-role/
我想指出,windows 事件查看器帮了大忙。在 Windows Azure 日志中,我发现在使用 Azure 模拟器启动 Web 角色时发生错误。 CacheInstaller.exe -> MissingMethodExceprion 抛出错误,消息为:
Method not found:
'Microsoft.ApplicationServer.Caching.ClusterConfigElement
- 我正在开发将 运行 在 Windows Azure Web 角色上的 Web 项目;
- 云端会有2个角色实例;
- 我正在使用分布在 2 个角色实例之间的并置命名缓存(角色内缓存);
- 在本地,我使用单个实例进行调试;
- 云端缓存客户端创建成功,运行流畅;
- 在本地调试时,我无法创建DataCacheFactory 的实例,因为当调用构造函数时,程序流"stops" 并没有继续执行下面的语句。也不例外!
这是我创建工厂和缓存客户端的代码:
var cacheFactoryConfig = new DataCacheFactoryConfiguration
{
ChannelOpenTimeout = TimeSpan.FromMinutes(2),
TransportProperties = {ReceiveTimeout = TimeSpan.FromSeconds(45)}
};
DataCacheFactory cacheFactory;
try
{
cacheFactory = new DataCacheFactory(cacheFactoryConfig);// <--stops here
}
catch (Exception e)
{
Trace.WriteLine(string.Format("--> Message-> {0}; --> Stack Trace->{1}", e.Message, e.StackTrace));
throw;
}
cacheClient = cacheFactory.GetDefaultCache();
服务配置:
在 web.config 中缓存客户端和服务器配置
如果需要,我会提供任何其他信息以便尽快解决问题。
-----编辑 1-----------------
由于相关 post Making Windows Azure Caching Work in Compute Emulator 我必须添加一些信息:
- 操作系统 -> Windows 7 Professional
- IDE -> Visual Studio 2013 终极更新 4
- Windows Azure 缓存包 2.4.0.0
- Windows Azure SDK 版本 2.4
我没有安装 Windows Server AppFabric,所以我要安装它!
经过几天的调查,我设法解决了问题并成功创建了 DataCacheFactory 和 DataCache 等实例。在以下 2 个帖子:
中描述并解决了该问题http://blog.elastacloud.com/2012/06/09/using-the-windows-azure-cache-preview-with-sdk-1-7/
- 在我的例子中,我安装了 Microsoft Server AppFabric,所以我删除了它。
- 以防万一,我删除了所有可用的 Windows Azure SDK(已安装 2.4)和 所有与 Azure 缓存相关的旧 nuget 包。
- 我确实确认所有程序集也已从 GAC 中删除。
- 在 "cleaning" 之后,我再次安装最新的 Azure SDK 2.5。 http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-in-role/
我想指出,windows 事件查看器帮了大忙。在 Windows Azure 日志中,我发现在使用 Azure 模拟器启动 Web 角色时发生错误。 CacheInstaller.exe -> MissingMethodExceprion 抛出错误,消息为:
Method not found: 'Microsoft.ApplicationServer.Caching.ClusterConfigElement