我想试用 AppFabric 1.1 的新的 read-through/write-behind 功能。根据http://msdn.microsoft.com/en-us/library/hh361698%28v=azure.10%29.aspx ,我实现了一个引用其他一些自己的程序集的提供程序。所有都是为 AnyCPU 签名和编译的。我将提供程序和所有引用的程序集放在 GAC 中(请参阅http://msdn.microsoft.com/en-us/library/hh361703(v=azure.10).aspx)。然后我停止了缓存集群并创建了一个新的缓存,其中包含通读和后写选项传递我的提供程序程序集的全名(我从 gacutil -l 获得的)。
New-Cache ReadThroughWriteBehindCache -ReadThroughEnabled true -WriteBehindEnabled true
-WriteBehindInterval 60 -ProviderType "CachingDemo.Provider, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=236fd28d53a6f1ad" -ProviderSettings @{"connectionString"="Data Source=.;Initial
Catalog=Demo;Persist Security Info=True;User
ID=sa;Password=password;MultipleActiveResultSets=True";"logFilePath"="C:\Logs\CacheProvider"}
再次启动缓存集群时,我在事件日志中收到超时和以下错误消息:
AppFabric Caching service crashed with exception Microsoft.ApplicationServer.Caching.DataCacheException:
ErrorCode<ERRCMS0007>:SubStatus<ES0001>:Provider "CachingDemo.Provider, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=236fd28d53a6f1ad" instantiation failed: The given assembly name
or codebase was invalid. (Exception from HRESULT: 0x80131047) ---> System.IO.FileLoadException:
The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
什么可能是错的?我对程序集名称进行了三重检查。我在创建缓存时传递的名称与我从 gacutil -l 获得的名称完全相同。组件是 AnyCPU,无论如何都应该工作。由于程序集甚至没有加载,因此可以排除程序集内部的错误。