Ошибка загрузки файла MVC Backload

У меня есть веб-приложение.NET 4.5 MVC 5, которое использует Backload 2.0, чтобы помочь с загрузкой файла Excel. Метод контроллера прекрасно работает в моей среде разработки. Однако, когда я перешел на свой производственный сервер, тот же метод теперь не работает.

Это терпит неудачу, потому что handler.Services.POST нулевой. Все остальные свойства отключены handler.Services также равны нулю, например GET, так далее.

Что может стать причиной этого? Это настройка IIS? Web.config? Что еще я могу проверить??

Большая часть этого кода была скопирована с примера, который поставляется с Backload.

        [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post | HttpVerbs.Put | HttpVerbs.Delete | HttpVerbs.Options)]
        public async Task<ActionResult> FileHandler()
        {
            try
            {
                // Create and initialize the handler
                var handler = Backload.FileHandler.Create();
                handler.Init(HttpContext.Request);

                // Call the appropriate request handlers
                if (handler.Context.HttpMethod == "POST")
                {
                    // Get the posted file with meta data from the request
                    handler.FileStatus = await handler.Services.POST.GetPostedFiles();

                    if (handler.FileStatus != null)
                    {
                        var file = handler.FileStatus.Files[0];

                        DateTime spreadsheetDate;

                        using (var memoryStream = new MemoryStream((int)file.FileSize))
                        {
                            await file.FileStream.CopyToAsync(memoryStream);

                            //TODO: do some stuff...
                        }
                    }

                    // Create client plugin specific result and return an ActionResult
                    IBackloadResult result = handler.Services.Core.CreatePluginResult();
                    return ResultCreator.Create((IFileStatusResult)result);
                }

                // other http methods may also be handled
                return new EmptyResult();
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(HttpStatusCode.InternalServerError);
            }
        }

1 ответ

Решение

Прямые вызовы API (пространство имен служб) - это функция Pro, которая работает только с Pro Edition.

В вашем случае я думаю, что вы можете переключиться на события с тем же результатом. Например, вы можете использовать StoreFileRequestStarted событие. Не забудьте включить события в Web.Backload.config, как описано здесь: https://github.com/blackcity/backload/wiki/Example-12

Демо-пакет также включает пример событий: https://github.com/blackcity/Backload/releases/download/v2.1.0.0/Backload.Standard.2.1.Full.zip

Другие вопросы по тегам