JsonServiceClient ResponseFilter没有触发

时间:2015-05-04 20:18:44

标签: c# servicestack

也许我错过了一些简单的事情,但我无法在我的生活中获得ResponseFilter来触发ServiceStack中的JsonServiceClientRequestFilter每次都会触发(我将API令牌发送到我的API)。这是一个示例控制台应用程序,显示ResponseFilter从不写入控制台。

static void Main(string[] args)
{
    using (var client = new JsonServiceClient())
    {
        client.ResponseFilter = httpResponse =>
        {
            Console.WriteLine("ResponseFilter: StatusCode == " + httpResponse.StatusCode);
        };

        try
        {
            System.Net.HttpWebResponse response = client.Get("https://app.asana.com/api/1.0/users/me");
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception => " + e.Message);
        }
    }
    Console.ReadLine();
}

我使用的是最新的ServiceStack v4.0.40.0

1 个答案:

答案 0 :(得分:2)

除了在using语句中处理的客户端之外,您单独提供的示例代码看起来是正确的。

创建客户端后,可以在ResponseFilter上注册一个操作,如上所示。

我在空的ServiceStack ASP.NET解决方案中创建了一个example project on GitHub,其中包含一个显示此过滤器工作的单元测试。

代码的主要部分与您提供的代码段非常相似。

bool calledRepsonseFilter = false;
var jsonServiceClient = new JsonServiceClient("http://techstacks.io/");
jsonServiceClient.ResponseFilter = response =>
{
    Console.WriteLine("A response!");
    calledRepsonseFilter = true;
};
var res = jsonServiceClient.Get(new AppOverview());
Assert.That(res.TopTechnologies != null);
Assert.That(calledRepsonseFilter == true);

我在ServiceStack论坛上给出了相同的答案,但是如果它也帮助了其他人,请更新这个问题。

希望有所帮助。