Httpcontext. current имеет значение null при использовании async
HttpContext.Current is null
Что я уже пробовал:
public async Task<ActionResult> UploadZipedDocumentFile() { try { if (Request.Files["fileUploadUpdateDocument"].ContentLength > 0 && Request.Files["fileUploadUpdateDocument"].ContentLength < Convert.ToInt64(WebConfigurationManager.AppSettings["UploadDataLength"])) { string zipFileSavePath = string.Empty; string zipExtractPath = string.Empty; string directory = string.Empty; string fullfilepath = string.Empty; string filePath = string.Empty; var Targetfile = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["CandidateFileUploadLocation"]); var TargetPath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["CandidateFileUploadLocation"]); string zipFileName = Request.Files["fileUploadUpdateDocument"].FileName; string fileExtension = System.IO.Path.GetExtension(Request.Files["fileUploadUpdateDocument"].FileName); string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(Request.Files["fileUploadUpdateDocument"].FileName); if (fileExtension == ".zip") { zipFileSavePath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["ZipFileUploadLocation"] + CommonFuntion.GenerateFileKey(zipFileName) + fileExtension); Request.Files["fileUploadUpdateDocument"].SaveAs(zipFileSavePath); zipExtractPath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"]);// + fileNameWithoutExtension); ZipFile.ExtractToDirectory(zipFileSavePath, zipExtractPath); filePath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"] + fileNameWithoutExtension); List<string> listOfpassportnumbers = new List<string>(); try { foreach (string item in Directory.GetDirectories(filePath)) { var stringCutted = item.Split('\\').Last(); listOfpassportnumbers.Add(stringCutted); } } catch { fullfilepath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"]); System.IO.DirectoryInfo deleteTheseFiles = new System.IO.DirectoryInfo(fullfilepath); deleteTheseFiles.Delete(true); TempData["ErrorMessages"] = @Mui.structureNotCorrectMessage; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } List<FileUpload> lstUploadedFiles = new List<FileUpload>(); var listOfDefaultyPassportNumber = new StringBuilder(); if (listOfpassportnumbers != null) { await Task.Run(() => { foreach (var item in listOfpassportnumbers) { var checkCandidateExist = service.GetAll().Where(x => x.IsDeleted == false && x.PassPortNo == item).FirstOrDefault(); if (checkCandidateExist != null) { directory = zipExtractPath + fileNameWithoutExtension + "\\" + item;//System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"] + fileNameWithoutExtension + "\\" + item); var checkAnyFolderExist = 0; // Visa documents upload process // var section = (Hashtable)ConfigurationManager.GetSection("MobolizationDocumentType");//remove Dictionary<Int32, string> dictionary = new Dictionary<Int32, string>(); //section.Cast<DictionaryEntry>().ToDictionary(d => Convert.ToInt32(d.Value), d => Convert.ToString(d.Key)); dictionary.Add(3, "Visa"); dictionary.Add(7, "VAD"); dictionary.Add(4, "Medical"); dictionary.Add(5, "Imigiration"); dictionary.Add(9, "Insurance"); dictionary.Add(15, "Ticket"); dictionary.Add(16, "Dispatch"); dictionary.Add(6, "OfferLetter"); foreach (KeyValuePair<Int32, string> kVp in dictionary) { var filepath = directory + "\\" + Convert.ToString(kVp.Value); if (System.IO.Directory.Exists(filepath)) { string sourcefile = Targetfile; string destinationpath = TargetPath; var VisaDocs = System.IO.Directory.GetFiles(filepath).ToList(); foreach (var VisaDoc in VisaDocs) { FileUpload objFileUpload = new FileUpload(); objFileUpload.DocTypeId = Convert.ToInt32(kVp.Key); objFileUpload.DocType = Convert.ToString(kVp.Value); objFileUpload.DocExtension = VisaDoc.Substring(VisaDoc.LastIndexOf(".") + 0); objFileUpload.DocFileName = CommonFuntion.GenerateFileKey(VisaDoc); objFileUpload.FileName = Path.GetFileName(VisaDoc); lstUploadedFiles.Add(objFileUpload); sourcefile = Path.Combine(Targetfile + objFileUpload.DocType, objFileUpload.DocFileName + objFileUpload.DocExtension); destinationpath = destinationpath + objFileUpload.DocType; if (!System.IO.Directory.Exists(destinationpath)) { System.IO.Directory.CreateDirectory(destinationpath); } System.IO.File.Copy(VisaDoc, sourcefile); var candidateDocument = new CandidateDocument(); candidateDocument.CandidateId = Convert.ToInt64(checkCandidateExist.Id); candidateDocument.DocTypeId = objFileUpload.DocTypeId; candidateDocument.DocType = objFileUpload.DocType; candidateDocument.FileName = objFileUpload.FileName; candidateDocument.DocFileName = objFileUpload.DocFileName; candidateDocument.DocExtension = objFileUpload.DocExtension; candidateDocument.CreatedBy = SessionWrapper.User.Id; candidateDocument.CreatedDate = DateTime.Now; candidateDocument.UpdatedBy = SessionWrapper.User.Id; candidateDocument.UpdatedDate = DateTime.Now; canDocumentService.Create(candidateDocument); canDocumentService.Save(); lstUploadedFiles.Clear(); } } else { checkAnyFolderExist++; } } } else { listOfDefaultyPassportNumber.Append(item + ','); } } }); //xy = System.Web.HttpContext.Current; //if (xy == null) //{ // // thrown // throw new ArgumentException("HttpContext.Current is null"); //} fullfilepath = System.Web.HttpContext.Current.Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"] + "\\" + fileNameWithoutExtension); System.IO.DirectoryInfo deleteTheseFiles = new System.IO.DirectoryInfo(fullfilepath); deleteTheseFiles.Delete(true); string defaultyPassportNumber = listOfDefaultyPassportNumber.ToString().TrimEnd(','); if (defaultyPassportNumber != string.Empty) { TempData["ErrorMessages"] = @Mui.passportNoNotFound + " " + defaultyPassportNumber + " " + @Mui.notUploadMessage; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } else { TempData["ErrorText"] = "True"; return RedirectToAction("Index", "CSR"); } } else { //fullfilepath = Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["UnZipFileUploadLocation"] + "\\" + fileNameWithoutExtension); //System.IO.DirectoryInfo deleteTheseFiles = new System.IO.DirectoryInfo(fullfilepath); //deleteTheseFiles.Delete(true); TempData["ErrorMessages"] = @Mui.documentEmptyMessage; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } } else { TempData["ErrorMessages"] = @Mui.formatNotSupportedMessage; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } } else { TempData["ErrorMessages"] = @Mui.selectFileUploadMessage; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } } catch (Exception ex) { //x = HttpContext.Current; //if (x == null) //{ // // thrown // throw new ArgumentException("HttpContext.Current is null"); //} log.Error(ex.StackTrace); if (ex.Message.Contains("Maximum request length exceeded")) { TempData["ErrorException"] = ex.Message; TempData["ErrorText"] = "false"; return RedirectToAction("Index", "CSR"); } return RedirectToAction("Index", "CSR"); } }
Kornfeld Eliyahu Peter
А если вы попробуете только HttpContext. Current (без префикса System.Web.)?
Richard Deeming
Попробуйте заменить System.Web.HttpContext.Current.Server.MapPath
с System.Web.Hosting.HostingEnvironment.MapPath
- предполагая, что вы не используете относительный путь, это вернет то же самое значение.
prakash00060
проблема та же
В await метод Httpcontext. current стал нулевым, и моя программа сломалась.
Richard Deeming
Если вы используете HostingEnvironment.MapPath
- тебе это не нужно. HttpContext.Current
- Насколько я вижу, вы не используете его ни для чего другого.
prakash00060
сэр проблема та же
В await метод Httpcontext. current стал нулевым, и моя программа сломалась.
публичная асинхронная задача & lt;actionresult> UploadZipedDocumentFile()
{
пробовать
{
если (запрос.Файлы["fileUploadUpdateDocument"].ContentLength и gt; 0 &&усилителя; запрос.Файлы ["fileUploadUpdateDocument"]. ContentLength < Convert.ToInt64(WebConfigurationManager.Параметр Appsettings["UploadDataLength"]))
{
string zipFileSavePath = string.Пустой;
string zipExtractPath = строка.Пустой;
Directory строка = строка.Пустой;
string fullfilepath = строка.Пустой;
string filePath = строка.Пустой;
/Система /свойство HttpContext СТХ =.Веб.Свойство HttpContext.Тока;
имя_zip-файла строки = запрос.Файлы ["fileUploadUpdateDocument"].имя файла;
string fileExtension = System.IO.Path.GetExtension(Request.Файлы ["fileUploadUpdateDocument"].имя файла);
строка fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(Request.Файлы ["fileUploadUpdateDocument"].имя файла);
if (fileExtension == ". zip")
{
zipFileSavePath = HostingEnvironment.MapPath(Системы.Веб.Конфигурации.WebConfigurationManager.AppSettings ["ZipFileUploadLocation"] + CommonFuntion.GenerateFileKey(имя_zip-файла) + расширение);
Запрос.Файлы ["fileUploadUpdateDocument"].Сохранить как(zipFileSavePath);
zipExtractPath = HostingEnvironment.MapPath(Системы.Веб.Конфигурации.WebConfigurationManager.AppSettings ["UnZipFileUploadLocation"]);/ / + fileNameWithoutExtension);
Zip-файл.ExtractToDirectory(zipFileSavePath, zipExtractPath);
filePath = HostingEnvironment.MapPath(Системы.Веб.Конфигурации.WebConfigurationManager.AppSettings ["UnZipFileUploadLocation"] + fileNameWithoutExtension);
Список<строка> У listOfpassportnumbers = новый список<строка&ГТ;();
пробовать
{
foreach (строковый элемент в каталоге.GetDirectories(filePath))
{
ВАР stringCutted = товар.Сплит('\\').Последние();
listOfpassportnumbers.Добавить (stringCutted);
}
}
ловить
{
fullfilepath = HostingEnvironment.MapPath(Системы.Веб.Конфигурации.WebConfigurationManager.Параметр Appsettings["UnZipFileUploadLocation"]);
Системы.ИО.Directoryinfoкласс deleteTheseFiles = новая система.ИО.Directoryinfoкласс(fullfilepath);
deleteTheseFiles.Удалить (true);
Данных Tempdata["Ошибок Сообщения"] = @Муи.structureNotCorrectMessage;
TempData ["ErrorText"] = " false";
return RedirectToAction ("Index", " CSR");
}
List< fileupload> lstUploadedFiles = новый список & lt;fileupload>();
var listOfDefaultyPassportNumber = new StringBuilder();
if (listOfpassportnumbers != null)
{
ожидайте задач.Запустить(() =&ГТ;
{
//Системы.Веб.Свойство HttpContext.Ток = СТХ;
по каждому элементу (ВАР продукт в listOfpassportnumbers)
{
var checkCandidateExist = сервис.GetAll ().Где (x => x.IsDeleted == false && x.PassPortNo == item).Метода firstordefault();
if (checkCandidateExist != null)
{
д
prakash00060
у вас есть какое-нибудь решение