У меня есть конечная точка API, которая возвращает файл в виде вложения. например, если я захожу на сайт www.myfileservice.com/api/files/download/123, я могу загрузить файл напрямую. Мое требование - использовать эту конечную точку в другом проекте ASP.Net MVC. Поэтому, если пользователь нажимает www.mymvcapplication.com/File/DownloadDocument/123, он также должен загрузить тот же файл. Внутренне метод действия должен вызвать API файловой службы и вернуть результат как есть. Это код, который я использую:
FileController.cs:
public HttpResponseMessage DownloadDocument(int Id)
{
return new DocumentClient().DownloadDocument(Id);
}
DocumentClient.cs:
public class DocumentClient
{
private string documentServiceURL = string.Empty;
private static string downloadDocumentUri = "api/files/download/";
protected HttpClient documentClient = null;
public DocumentClient()
{
documentServiceURL = "www.myfileservice.com";
documentClient = new HttpClient();
documentClient.BaseAddress = new Uri(documentServiceURL);
}
public HttpResponseMessage DownloadDocument(int Id)
{
return documentClient.GetAsync(String.Format("{0}/{1}", downloadDocumentUri, Id)).Result;
}
}
Приведенный выше код не дает никаких ошибок, но толькопечать ответа в окне браузера (Content-Length, Content-Disposition и т. д.). Мне нужно скачать файл вместо этого.