无法从其他应用程序中读取azure缓存数据

时间:2012-05-17 00:58:32

标签: c# caching azure

我使用以下代码进行azure-caching,它工作正常......

[Serializable]
public class Person
{
    public string First { set; get; }
    public string Last { set; get; }

}

[TestClass]
public class AzureCachingTests1
{
    private static DataCacheFactory _factory;

    [TestInitialize]
    public void Setup()
    {

        _factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache"));
    }


    [TestMethod]
    public void TestMethod1()
    {

        DataCache cache = _factory.GetDefaultCache();

        var person = new Person { First = "Jane", Last = "doe" };
        const string key = "mykey";

        cache.Put(key, person, TimeSpan.FromMinutes(10));
        var data = (Person)cache.Get(key);
        Assert.AreEqual("Jane", data.First);

    }
}

现在在Visual Studio的另一个实例中,我运行以下代码......

[TestClass]
public class AzureCachingTests
{
    private static DataCacheFactory _factory;
    [TestInitialize]
    public void Setup()
    {

        _factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache"));
    }


    [TestMethod]
    public void TestMethod1()
    {

        DataCache cache = _factory.GetDefaultCache();
        const string key = "mykey";
        var data = (Person) cache.Get(key);  <----- Error here... <--------
        Assert.AreEqual("Jane", data.First);

    }
}

[Serializable]
public class Person
{
    public string First { set; get; }
    public string Last { set; get; }

}

这一次,我收到以下错误......

测试方法AzureCaching.AzureCachingTests.TestMethod1抛出异常: System.Runtime.Serialization.SerializationException:找不到程序集'AzureCaching1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。

我的班级人员是可序列化的。为什么我无法在AzureCaching1中查询AzureCaching中的缓存?

请帮忙。感谢

1 个答案:

答案 0 :(得分:2)

除非您引用了AzureCachingTests1所在的项目,否则您的测试不知道如何反序列化它从缓存中检索的项目。您有两个具有相同名称和相同属性的类,但它们不是同一个类。

因为您正在编写测试,所以您需要从AzureCachingTests所在的项目中引用AzureCachingTests1所在的项目,并删除AzureCachingTests项目中Person的类定义(并确保您正在转换为正确的班级)。

如果这不是测试而你只是想在两个或更多项目之间共享一个类,那么最好的想法是让第三个项目包含两个共同的所有类,在这种情况下它只是人类。