asp.net-web-api – 如何从Web API获取IObservable
|
我有一个简单的Web API,它返回一个Iobservable.我正在使用HttpClient来获取Observable,以便我可以订阅它.我的问题是订阅时返回的Iobservable发出一个’空’结果. 服务器 public IObservable<DataItem> GetDataItems()
{
return Observable.Generate(0,i => i < 10,i => i + 1,i => new DataItem
{
Id = i,Name = String.Format("Storage{0}",i)
});
}
客户 public IObservable<DataItem> GetDataItems()
{
using (HttpClient apiClient = new HttpClient())
{
apiClient.BaseAddress = new Uri("http://localhost:9001");
apiClient.DefaultRequestHeaders.Add("x-user-authentication","xxxxxx");
return apiClient
.GetAsync("api/xxxx/yyyy").Result.Content
.ReadAsAsync<DataItem>().ToObservable();
}
}
var source = GetDataItems();
List<DataItem> items = new List<DataItem>();
IDisposable consoleSubscription = source.Subscribe(
x => Console.WriteLine("{0}:{1}",x.Id,x.Name),ex => Console.WriteLine("OnError : {0} ",ex.Message),() => Console.WriteLine("Encountered End of Stream")
);
consoleSubscription.Dispose();
我的问题是我没有从服务器获取任何数据.我得到一个’空’可观察.我对我的控制器写了一个单元测试,它确实给了数据项. 有任何建议请帮忙.无法理解我哪里出错了.服务器或客户端上没有错误. 解决方法你有点雄心勃勃,期待一个IObservable< T>自动流过电线.我担心WebAPI不会为你做那件事.你看到的是默认的json序列化器输出IObservable< T>的属性的结果. – 没有,所以你得到空的支架. 您的单元测试有效,因为它全部在内存中 – 没有发生序列化/反序列化. 有一些方法可以使用HttpResponseMessage的StreamContent属性来流式传输结果,您可以将结果桥接到IObservable< T>. – 但它并不是真正惯用的WebApi. WebApi的异步支持实际上旨在通过服务器上的单项响应异步处理请求,而不是连续返回流事件. 最重要的是,我认为WebApi(至少在撰写本文时)是错误的技术选择.你最好不要看SignalR是为这种场景而构建的,并且包含在当前的ASP.NET版本中.它具有javascript和.NET客户端支持,您可以桥接到IObservable< T>相当容易.有些人已经看过这个,比如in this post sporting example code. 一些消息传递中间件,如my-Channels Nirvana(编辑:自从Terracotta买断并包装到Universal Messaging中,example code可以在他们的文档中找到.),而像SQL Server StreamInsight这样的CEP解决方案也具有开箱即用的IObservable支持. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Azure Apps EasyAuth声称使用.NET Core
- ASP .NET MVC Forms授权与Active Directory组
- asp.net – HttpWebRequest正在为404抛出异常
- asp.net-mvc – Azure ACS 2自定义域
- asp.net – SQL – 两个不同长度的字符串之间的相似性
- asp.net html控件的File控件实现多文件上传实例分享
- ASP.NET MVC – 在何处放置数据库查询
- ASP.NET MVC 3助手中的Tab命令
- asp.net-mvc – 如何在VS2008 Web Devloper Express中的一个
- 如何使用ASP.NET更改HTML页面元素的CSS类?
- asp.net-mvc – 当前上下文中不存在名称“ViewBa
- asp.net-mvc – asp.net mvc – 子文件夹
- asp.net-web-api – Web API 2 OWIN承载令牌认证
- asp.net-mvc – 捕获文件名作为参数的MVC路由
- asp.net-mvc – 如何将XML作为POST传递给ASP MVC
- asp.net-mvc – ASP.NET MVC泛型基础视图类
- SimpleModal打破ASP.Net回传
- asp-classic – 浏览器似乎忽略了响应缓存控制指
- asp.net – 如何在Web应用程序中使用ServiceStac
- asp.net-mvc – BreadCrumb trail MVC3和Razor
