我创建了两个完全相同的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/
将教程中的代码复制并粘贴到VS 2012项目(使用Web API 1?)中不会产生任何错误(添加正确的“using”语句后)。
然而,当我在VS 2013项目中按照相同步骤操作时,我会遇到以下两个错误:
Error 1
调用在以下方法或属性之间模棱两可: 'PushStreamContent(System.Func<Stream,HttpContent,TransportContext,Task>, MediaTypeHeaderValue)' 和 'PushStreamContent(System.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,因为这段代码:
public async void WriteToStream(Stream outputStream, HttpContent content, TransportContext context) {...}
在Web API 1和2之间不再被标识为<action>
??我真的很困惑,因为我针对相同的框架,并且似乎无法跨越直觉上修复。我尝试更改WriteToStream签名的尝试都失败了。
有人知道我需要什么才能使PushStreamContent在Web API 2或VS 2013或新的C#中接受WriteToStream吗?还是这段代码存在差异的地方?