我正在为我拥有的 Web API Web 角色实现 Azure 角色内缓存。我希望能够缓存不经常更改的特定 blob 的 BlobReference。这是我用来获取 BlobReference 的代码。我收到的项目是 CloudBlockBlob 类型的 zip 文件
public ICloudBlob GetBlob(string containerName, string blobName)
{
CloudBlobContainer container = GetBlockBlobContainer(containerName);
ICloudBlob blob = container.GetBlobReferenceFromServer(blobName);
return blob;
}
但是,当我尝试将项目放入缓存时,它说 CloudBlockBlob 不可序列化。由于我无法将该类修改为可序列化,是否有解决方法?如果不是,对于不经常更改的 blob,缓存 blob 元数据的首选方法是什么?
最佳答案
将您需要的内容复制到 DTO 中。将复杂对象放入 appdomain 全局数据结构通常不是一个好的模式。你永远不知道它们背后是什么样的对象图以及它们是否是线程安全的。如果这些类来自第三方库,您将无法知道里面有什么。您需要自己控制对象。
长时间运行的进程中的全局状态是非常关键的资源。如果你搞砸了,应用程序可能会不可用,直到手动进程重新启动为止,这是灾难性的。
关于c# - 序列化 CloudBlockBlob 以进行缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652805/