Почему я получаю ошибку «Исключение из HRESULT: 0x800A03EC» при развертывании приложения mvc на работающем сервере с использованием iis? - PullRequest
0 голосов
/ 15 февраля 2019

Однако я загружаю файл Excel и пытаюсь прочитать его содержимое.С помощью следующего кода, он отлично работает на localhost.Однако, если я загружаю на действующий сервер с использованием IIS, это не работает.Странно то, что мой загруженный файл сохраняется в папке содержимого на сервере, однако в сообщении об ошибке он открывает файл с моего локального компьютера:

Microsoft.Office.Interop.Excel.Workbooks.Открыть (строковое имя файла, объект UpdateLinks, объект ReadOnly, формат объекта, пароль объекта, объект WriteResPassword, объект IgnoreReadOnlyRecommended, происхождение объекта, разделитель объектов, объект редактируемый, уведомление объекта, преобразователь объекта, объект AddToMru, объект Local, объект CorruptLoad) +0 Twilio4.Controllers.HomeController.Import (HttpPostedFileBase excelfile, модель SendMessageVal)

в C: \ Users \ sbudhai \ source \ repos \ SAP \ SAP \ Controllers \ HomeController.cs: 111

[HttpPost]
public ActionResult Import(HttpPostedFileBase excelfile, SendMessageVal Model)
{
    if(ModelState.IsValid == true)
    {
        if (excelfile == null || excelfile.ContentLength == 0)
        {
            ViewBag.Error2 = "Please select an excel file <br>";
            return View(Model);
        }
        else
        {
            if (excelfile.FileName.EndsWith("xlsx") || excelfile.FileName.EndsWith("xls"))
            {
                string path = Server.MapPath("~/Content/" + excelfile.FileName);
                if (System.IO.File.Exists(path))
                    System.IO.File.Delete(path);
                excelfile.SaveAs(path);

                //Read data from excel file 
                Excel.Application application = new Excel.Application();
                Excel.Workbook workbook = application.Workbooks.Open(path);
                Excel.Worksheet worksheet = workbook.ActiveSheet;
                Excel.Range range = worksheet.UsedRange;
                List<NUMBER> listProducts = new List<NUMBER>();
                var C = range.Rows.Count;
                var B = range.Rows.Count;

                C++;
                for (int row = 2; row < C; row++)
                {
                    NUMBER p = new NUMBER();
                    p.NUMBER1 = long.Parse(((Excel.Range)range.Cells[row, 1]).Text);
                    listProducts.Add(p);
                }

                ViewBag.ListProducts = listProducts;
                workbook.Close(path);
                return View("Confirm", listProducts);
            }
            else
            {
                ViewBag.Error = "File type is incorrect <br>";
                return View(Model);
            }

        }
    }
    else
    { 
        return View(Model);
    }
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы можете использовать библиотеку OpenXML вместо Office Interop, вы потратите время, пытаясь это исправить, но в итоге это будет намного лучше

0 голосов
/ 15 февраля 2019

Использование Office Interop на сервере не поддерживается .

В связанной статье описываются некоторые проблемы, с которыми вы столкнетесь.Я рекомендовал бы использовать альтернативу, такую ​​как EPPlus , или коммерческий продукт, такой как Aspose Cells .

...