这个问题非常相似,但没有给我我所需要的。
我正在使用Entity Framework6。我的数据库有两个表,Customers和CustomerTypes。我为每个创建了一个ViewModel。客户可以具有以下类型:
public class Customer
{
public int CustomerID { get; set; }
public string CustomerName { get; set; }
public CustomerTypeViewModel CustomerType { get; set; }
}
public class CustomerTypeViewModel
{
public int CustomerTypeID { get; set; }
public string CustomerTypeDescription { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个Customer控制器,它公开了具有IQueryable返回类型的odata操作方法:
[HttpPost, Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<CustomerViewModel> GetCustomersMatchingCriteria([FromBody]ODataActionParameters parameters)
{
var criteria = (CustomerMassUpdateCriteriaViewModel)parameters["Criteria"];
return Common.Customers.GetCustomerMassUpdateCriteriaResults(criteria,
ConfigurationManager.AppSettings["CLIENT_ID"]).Select(
c => new CustomerViewModel()
{
CustomerID = c.CustomerID,
CustomerName = c.CustomerName,
CustomerType = new …Run Code Online (Sandbox Code Playgroud) c# entity-framework odata asp.net-web-api asp.net-mvc-viewmodel
我有一个 mp4 视频,已上传到 Azure Blob 存储(块、存储 v2)。我无法使用<video>标签提供视频而不会出现播放延迟,因为视频已从服务器完全下载(带有 200 响应状态代码)。
(更糟糕的是,虽然与我的问题不完全相关,因为我认为这更多是浏览器问题,但视频设置为循环,并且每次循环都会重新下载。)
相反,我想使用部分内容范围来流式传输视频,以便立即开始播放。
我尝试直接获取视频,为<video>标签src属性提供绝对 URI;我还尝试通过 ASP .NET Core 3.1 控制器方法提供视频,返回 aFileStreamResult并将enableRangeProcessing参数设置为true. 这是该代码:
public async Task<IActionResult> GetVideo(string videoUrl)
{
var httpClient = new HttpClient();
var stream = await httpClient.GetStreamAsync(videoUrl);
return File(stream, new MediaTypeHeaderValue("video/mp4").MediaType, true);
}
Run Code Online (Sandbox Code Playgroud)
似乎无论我尝试什么,我都无法获得带有 206 状态代码的范围响应。我已经看到了有关使用 Azure 媒体服务的建议,但这似乎有点矫枉过正,这应该是只需支持而无需合并其他服务的东西。
任何帮助/建议将不胜感激 - 谢谢!
c# video-streaming html5-video azure-blob-storage asp.net-core-3.1