用于PCL的RestSharp不从ASP.NET Web API返回数据

用于PCL的RestSharp不从ASP.NET Web API返回数据,rest,asp.net-web-api,restsharp,Rest,Asp.net Web Api,Restsharp,我使用它来创建一个简单的Web API 然后我从下载了RestSharp的PCL版本,编译并尝试执行以下测试代码: [TestFixture] public class UnitTest1 { [Test] public void TestMethod1() { var client = new RestClient("http://localhost:18506/api/"); v

我使用它来创建一个简单的Web API

然后我从下载了RestSharp的PCL版本,编译并尝试执行以下测试代码:

 [TestFixture]
    public class UnitTest1
    {
        [Test]
        public void TestMethod1()
        {
            var client = new RestClient("http://localhost:18506/api/");
            var request = new RestRequest("products", Method.GET);
            client.ExecuteAsync<List<Product>>(request, response =>
            {
                foreach (var a in response.Data)
                {
                    Console.WriteLine(a.Name);
                }
            });
        }

        public class Product
        {
            public string Name { get; set; }
        }
    }
[TestFixture]
公共类UnitTest1
{
[测试]
公共void TestMethod1()
{
var client=新的RestClient(“http://localhost:18506/api/");
var请求=新的重新请求(“产品”,方法.GET);
client.ExecuteAsync(请求、响应=>
{
foreach(vara在response.Data中)
{
Console.WriteLine(a.Name);
}
});
}
公共类产品
{
公共字符串名称{get;set;}
}
}
没有向控制台写入任何内容,如果我在回调中设置断点,则不会命中

有什么建议吗


TIA。

您触发了一个异步HTTP调用,似乎从未等待它完成。请尝试等待,否则您的单元测试可能会在Web API被请求击中之前完成:

client.ExecuteAsync<List<Product>>(request, response =>
{
    ...
}).Result;
client.ExecuteAsync(请求,响应=>
{
...
}).结果;

但是在单元测试中,您可能不需要因为异步HTTP调用而使您的生活变得复杂。只需使用一个标准的同步调用并对接收到的结果进行断言。

我至少希望看到写入控制台的内容,或者在返回lamda中命中断点。这是RestSharp的PCL版本,它没有同步API。此外,client.ExectuteAsync的响应是restrequestAsynchHandle,它没有Result属性。我主要是将此作为一个学习测试来了解RestSharp是如何工作的。你不能期望异步调用立即返回,并且测试终止,导致AppDomain关闭。因此,在您的测试终止应用程序之前,可能没有时间发送请求。啊,现在我明白您的意思了。让我试着等待结果完成并发回。谢谢,基本上就是这样。修改测试以等待返回结果。