Данные, не достигающие сбоя ЗАПРОСА контроллера API

#angularjs #asp.net-mvc

#angularjs #asp.net-mvc

Вопрос:

У меня есть приложение, в котором пользовательский интерфейс построен с помощью Angular js и серверной части на Asp.net mvc. При нажатии кнопки я вызываю службу angular, которая передает объект json в asp.net Контроллер API вместо обычного контроллера mvc. Это связано с тем, что контроллер API должен сгенерировать файл Excel и вернуть HttpResponseMessage. Теперь, когда вызов переходит от службы angular к контроллеру API, данные не достигают и отображаются как неудачный запрос. В моей конфигурации маршрута у меня есть URL, определенный как «{controller} / {action} / {id}».Также вызовы обычных контроллеров выполняются нормально. Нужно ли добавлять URL-адрес для контроллера api, чтобы вызов службы достиг контроллера API. Также обычный контроллер mvc и контроллер API находятся в одной папке. Также для информации я запускаю приложение в https с различными настройками в IIS в локальной разработке. Ниже приведен код для службы angular и контроллера API mvc.

 Service: 
ServiceSlarDetails.prototype.GetSlarExcelFile = function () {
            var link, params;
            //link = baseUrl   '/SLAR/GetSlarExcelFile';
            link = baseUrl   '/File/GetSlarExcelFile';
            params = "'"   JSON.stringify(this.object)   "'";
            return $http({
                headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
                method: 'POST',
                url: link,
                responseType: "arraybuffer",
                data: params
            }).then(function onSuccess(response) {
                return response.data;
            }).catch(function onError(data, status, headers, config) {
                return NewAlert.show('Oops!', 'Sorry, something went wrong. Please try again.', 'error');
            });
        };


 API CONTROLLER: 
   public class FileController : ApiController
{
    [HttpPost]
    public HttpResponseMessage GetSlarExcelFile([FromBody] string ExcelTable)
    {
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        object obj = null;
        HttpResponseMessage FailReturn = new HttpResponseMessage(HttpStatusCode.NoContent);
        try
        {
            var data = (DataTable)JsonConvert.DeserializeObject(ExcelTable, (typeof(DataTable)));
            data.TableName = "Slar";
            if (data.Rows.Count > 0)
            {
                //string path = HttpContext.Current.Server.MapPath("~/ExcelFiles");
                //if (!Directory.Exists(path))
                //{
                //    Directory.CreateDirectory(path);
                //}
                using (XLWorkbook wb = new XLWorkbook())
                {

                    wb.Worksheets.Add(data);

                    MemoryStream ms = new MemoryStream();
                    {

                        //wb.SaveAs(path   "/"   DateTime.Now.Ticks   ".xlsx");
                        wb.SaveAs(ms);



                        result.Content = new ByteArrayContent(ms.GetBuffer());
                        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
                        result.Content.Headers.ContentDisposition.FileName = "Invoices.xlsx";
                        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

                        result.Content.Headers.ContentLength = ms.Length;
                        ms.Seek(0, SeekOrigin.Begin);

                    }
                }
            }

            // obj = new { resp = data, error = "" };

        }
        catch (Exception ex)
        {
            //Logger.Error(ex.Message);
            //obj = new { resp = "", error = ex.Message.ToString() };
        }

        return resu<
    }
}
  

Комментарии:

1. Вы пытались вызвать это из postman? Какой URL-адрес вы вызываете? localhost/FileController/GetSlarExcelFile? Вы уверены, что делаете HTTP POST?

2. localhost/File/GetSlarExcelFile