http://www.codeproject.com/Articles/820146/HTTP-Partial-Content-In-ASP-NET-Web-API-VideoTunnel Web API ответ видеопоток через MVC действие
Используя ссылку выше я создал апи вызов веб, который будет возвращать видео и играть без каких-либо проблем, если я называю Web API напрямую. В процессе производства веб-api-вызов будет за брандмауэром и не будет непосредственно доступен для публики. И по причинам, которые слишком длинны, я не могу добавить службу веб-api на сайт, ориентированный на общественность.
Я хотел бы туннелировать вызов к видео с помощью действия MVC и вернуть пользователю результат точного результата от веб-контроллера api. Web api возвращает HttpResponseMessage, поэтому я использовал приведенный ниже код, думая, что могу просто пропустить передозировку, но, похоже, он вообще не работает.
public HttpResponseMessage Play(string fileName)
{
using (var client = new HttpClient())
{
var userName = Impersonation.Instance.CurrentImpersonatedUser;
var url = string.Format("{0}/api/Player/Play?f={1}",
this.pluginSettings["VirtualVideoTrainingServiceURL"],
fileName);
var result = client.GetAsync(url).Result;
return result;
}
}
Когда я делаю вызов вызова MVC, я просто получаю его в браузере. Result Я думаю, что это сериализует данные в некотором роде, но я не могу доказать или опровергнуть эту теорию. Нужно ли мне анализировать ответ из веб-службы, а затем преобразовывать его в результат файла? Любая помощь будет оценена!
Для нормальной модели вы правы, но это будет возвращать потоковый поток файла, поэтому мне нужно избегать JSON. Действие MVC будет использоваться в атрибуте src элемента видео html. –
Почему бы не добавить контроллер, который происходит из ApiController, а канал - для вывода на ваши клиенты? @RodneyPannell –
Трудно объяснить, почему я не могу добавить контроллер WebAPI на общедоступный сайт, но ApiController не может использоваться на публичном сайте. Это не «обычный» сайт MVC. Обычно мы используем RestSharp для связи с веб-api за файловой стеной, но это совершенно другой сценарий, чем вытаскивание модели из базы данных. –