Проблема загрузки файла с контроллером API

public class DefaultController : Controller
{
    // GET: Default
    public ActionResult Index()
    {
        return Download();
    }

    public FileResult Download()
    {
        string xmlString = "my test xml data";
        string fileName = "test" + ".xml";
        return File(Encoding.UTF8.GetBytes(xmlString), "application/xml", fileName);
    }
}

У меня есть вышеуказанный код в приложении asp.net mvc для загрузки файла. Он работал нормально, так как мой контроллер унаследован от контроллера. Но когда я перемещаю этот код в контроллер Webapi, он выдает ошибку при возвратефайл, После анализа я обнаружил, что мой контроллер в webapi наследуется ApiController (контроллер system.web.http.api). Я обнаружил, что в ApiController нет класса File. Есть ли возможность реализовать загрузку файловых функций в контроллере webapi?

Я попробовал приведенный ниже альтернативный код в контроллере webapi, но не смог увидеть загружаемый файл после того, как позвонил.

public HttpResponseMessage DownloadConstructedXmlFile()
        {
            var result = new HttpResponseMessage(HttpStatusCode.OK);
            string xmlContent = "My test xml data";
            //var serializer = new XmlSerializer(typeof(xmlContent));

            var builder = new StringBuilder();
            using (var writer = new StringWriter(builder))
            {
                // serializer.Serialize(writer, xmlContent);
                result.Content = new StringContent(xmlContent, Encoding.UTF8, "application/xml");
                result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = string.Format("test.xml")
                };
               // return result;
            }

            return new HttpResponseMessage();
        }

PS: я пытаюсь использовать код angularjs для вызова этого API через службу angular. Это вызывается при нажатии кнопки загрузки. Любой пример углового кода или помощь в коде контроллера API или предложения будут полезны.

Ответы на вопрос(0)

Ваш ответ на вопрос