我创建了两个相同的 Web api 项目,一个在 VS 2012 中,另一个在 VS 2013 中,两者都针对 4.5 .net 框架。这些项目基于 Filip W 的视频下载教程:http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/ http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/
将教程中的代码复制并粘贴到 VS 2012 项目中(使用 Web api 1?)不会产生任何错误(在我添加正确的“using”语句之后)。
但是,当我在 VS 2013 项目中执行相同的步骤时,出现以下两个错误:
Error 1
以下方法或属性之间的调用是不明确的:
'PushStreamContent(系统.Func<Stream,HttpContent,TransportContext,Task>
, MediaTypeHeaderValue)'
和
'PushStreamContent(系统.Action<System.IO.Stream,HttpContent,TransportContext>
, MediaTypeHeaderValue)'
Error 2
'void video_stream.Controllers.VideoStream.WriteToStream(System.IO.Stream, System.Net.Http.HttpContent, System.Net.TransportContext)' 返回类型错误
所以我的猜测是错误 2 是真正的问题,因为这段代码:
公共异步无效WriteToStream(流输出流,HttpContent内容,TransportContext上下文){...}
未被识别为<action>
web api 1 和 2 之间还有吗?我在这里真的很困惑,因为我的目标是相同的框架,而且我似乎无法在如何修复它方面做出直观的飞跃。我尝试更改 WriteToStream 签名都失败了。
有谁知道我需要什么才能让 PushStreamContent 接受 Web api 2 或 VS 2013 或新的 C# 中的 WriteToStream 或此代码中的差异在哪里?