Действие загрузки Excel завершается неудачно после развертывания на эластичном бобовом стебле - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть приложение MVC, которое позволяет администратору загружать файл Excel в систему;Затем контроллер создает набор данных с данными Excel, а затем заполняет базу данных «Schools» и «School2» набором данных с использованием SqlBulkCopy.

Эти загрузки отлично работают, когда я тестирую их локально с помощью IIS Express, хотята же версия, развернутая в aws эластичный beanstalk, выдает ошибку, когда я нажимаю кнопку импорта. Ошибка в консоли отображается следующим образом: Не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера). Могу ли я получить дополнительную информацию об этой ошибке? Я проверил журналы EC2, и единственная строка, которую я вижу, касающаяся ошибки (которая также не дает причины ошибки):

2019-10-28 16:53:19 172.30.2.190POST / Upload - 80 user1@test.com 37.228.251.230 Mozilla / 5.0 + (Windows + NT + 10.0; + Win64; + x64) + AppleWebKit / 537.36 + (KHTML, + like + Gecko) + Chrome / 77.0.3865.120 +Safari / 537.36 http://campbookingsys -dev.eu-west-1.elasticbeanstalk.com / Загрузить 500 0 0 93 Рис. Об ошибке: https://i.ibb.co/QpR7HmV/errodb.png

Может кто-нибудь увидеть какие-либо четкие причины, почемуэто действие хорошо работает локально, но не работает при развертывании на эластичный бобовый стебель? Моя база данных настроена правильно, так как я могу просматривать списки данных структуры сущностей из базы данных в моем приложении. Я также могу войти, чтобы базы данных были подключены нормально. Единственная проблема - кнопка загрузки не работает при развертывании (хотя она работает локально на IIS)

Мой UploadController:

public class UploadController : Controller
{
SqlConnection con = new SqlConnection(@"Data Source=bookingdb.cwln7mwjvxdd.eu-west-1.rds.amazonaws.com,1433;Initial Catalog=modeldb;User ID=USER;Password=PASSWORD;Database=modeldb;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");

OleDbConnection Econ;

public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
string filepath = "/excelfolder/" + filename;
file.SaveAs(Path.Combine(Server.MapPath("/excelfolder"), filename));
InsertExceldata(filepath, filename);
return View();
}

[HttpPost]
public ActionResult Index2(HttpPostedFileBase file)
{
string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
string filepath = "/excelfolder/" + filename;
file.SaveAs(Path.Combine(Server.MapPath("/excelfolder"), filename));
InsertExceldata2(filepath, filename);
return RedirectToAction("Index");
}

private void ExcelConn(string filepath)
{
string constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", filepath);
Econ = new OleDbConnection(constr);
}

private void InsertExceldata(string filepath, string filename)
{
string fullpath = Server.MapPath("/excelfolder/") + filename;
ExcelConn(fullpath);
string query = string.Format("Select * from [{0}]", "Sheet1$");
OleDbCommand Ecom = new OleDbCommand(query, Econ);
Econ.Open();

DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(query, Econ);
Econ.Close();
oda.Fill(ds);

DataTable dt = ds.Tables[0];

SqlBulkCopy objbulk = new SqlBulkCopy(con);
objbulk.DestinationTableName = "dbo.Schools";
objbulk.ColumnMappings.Add("AcademicYear", "AcademicYear");
objbulk.ColumnMappings.Add("RollNumber", "RollNumber");
objbulk.ColumnMappings.Add("OfficialSchoolName", "OfficialSchoolName");
objbulk.ColumnMappings.Add("Address1", "Address1");
objbulk.ColumnMappings.Add("Address2", "Address2");
objbulk.ColumnMappings.Add("Address3", "Address3");
objbulk.ColumnMappings.Add("Address4", "Address4");
objbulk.ColumnMappings.Add("County", "County");
objbulk.ColumnMappings.Add("Eircode", "Eircode");
objbulk.ColumnMappings.Add("LocalAuthority", "LocalAuthority");
objbulk.ColumnMappings.Add("X", "X");
objbulk.ColumnMappings.Add("Y", "Y");
objbulk.ColumnMappings.Add("ITMEast", "ITMEast");
objbulk.ColumnMappings.Add("ITMNorth", "ITMNorth");
objbulk.ColumnMappings.Add("Latitude", "Latitude");
objbulk.ColumnMappings.Add("Longitude", "Longitude");

con.Open();
objbulk.WriteToServer(dt);
con.Close();
}

private void InsertExceldata2(string filepath, string filename)
{
string fullpath = Server.MapPath("/excelfolder/") + filename;
ExcelConn(fullpath);
string query = string.Format("Select * from [{0}]", "Sheet1$");
OleDbCommand Ecom = new OleDbCommand(query, Econ);
Econ.Open();

DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(query, Econ);
Econ.Close();
oda.Fill(ds);

DataTable dt = ds.Tables[0];

SqlBulkCopy objbulk = new SqlBulkCopy(con);
objbulk.DestinationTableName = "dbo.School2";
objbulk.ColumnMappings.Add("RollNumber", "RollNumber");
objbulk.ColumnMappings.Add("OfficialSchoolName", "OfficialSchoolName");
objbulk.ColumnMappings.Add("Address1", "Address1");
objbulk.ColumnMappings.Add("Address2", "Address2");
objbulk.ColumnMappings.Add("Address3", "Address3");
objbulk.ColumnMappings.Add("Address4", "Address4");
objbulk.ColumnMappings.Add("County", "County");
objbulk.ColumnMappings.Add("Eircode", "Eircode");
objbulk.ColumnMappings.Add("PhoneNumber", "PhoneNumber");
objbulk.ColumnMappings.Add("Email", "Email");
objbulk.ColumnMappings.Add("PrincipalName", "PrincipalName");
objbulk.ColumnMappings.Add("DeisSchool", "DeisSchool");
objbulk.ColumnMappings.Add("SchoolGender", "SchoolGender");
objbulk.ColumnMappings.Add("PupilAttendanceType", "PupilAttendanceType");
objbulk.ColumnMappings.Add("IrishClassification", "IrishClassification");
objbulk.ColumnMappings.Add("GaeltachtArea", "GaeltachtArea");
objbulk.ColumnMappings.Add("FeePayingSchool", "FeePayingSchool");
objbulk.ColumnMappings.Add("Religion", "Religion");
objbulk.ColumnMappings.Add("OpenClosedStatus", "OpenClosedStatus");
objbulk.ColumnMappings.Add("TotalGirls", "TotalGirls");
objbulk.ColumnMappings.Add("TotalBoys", "TotalBoys");
objbulk.ColumnMappings.Add("TotalPupils", "TotalPupils");

con.Open();
objbulk.WriteToServer(dt);
con.Close();
}
}

Я также пытался установить драйверы поставщика OLEDB Excel наEC2 и я все еще получаю ошибку. Может ли быть так, что моему RDS нужен доступ к этим драйверам? Если это так, я не уверен, как этого добиться, так как я не могу просто установить драйверы струи доступа на мой RDS, как я делал это на своем EC2.

...