У меня есть два способа получения изображений на веб-сайте ASP.NET MVC. Если я ищу изображения на диске с помощью Проводника, изображение там, но в моем файле журнала много ошибок, говорящих о том, что каждое изображение не существует.
Иногда это работает без проблем, но другие, мое приложение не может найти изображение. Если я перезагружаю свой сайт IIS или перезагружаю компьютер, он работает без каких-либо проблем, но имеет случайное поведение, которое я должен разрешить.
Два пути, где расположены изображения:
"C:\inetpub\wwwroot\Test_Application\Content\Images" (Inside site public dir)
"C:\Test_Application\images" (Configured on IIS as a virtual directory)
Это устройство Windows 10 Pro, на котором запущены IIS, а пул приложений, на котором работает сайт, имеет учетную запись Windows с правами администратора в качестве удостоверения, поскольку мне нужно подключиться к SQL Server LocalDb.
Функция записи сообщения в журнал:
private bool Func_GetImages(RecordModel record)
{
bool bResult = false;
List<string> imagesFound = new List<string>();
string sImageMaskName = string.Empty;
string sAbsoluteImgPath = string.Empty;
string sSourceImgPath = string.Empty; //Path to img directory with year, month and day.
string sTargetImgPath = string.Empty;
try
{
Config.LogHelper.Func_WriteEventInLogFile(DateTime.Now.ToLocalTime(), enum_EventTypes.Debug, "Func_GetImages", "Get Images: ",
string.Format("Get images for record with GUID: {0}; Image Mask Name: {1}; Times for Images: {2}", record.GUID, record.imageMaskName,
record.TimeBetweenColorImages));
if (HttpContext.Current != null)
{
sAbsoluteImgPath = HttpContext.Current.Server.MapPath(Config.sImgDirectory);
sTargetImgPath = HttpContext.Current.Server.MapPath("~/Content/Images/Processed");
}
else
{
sAbsoluteImgPath = string.Format("{0}/", AppDomain.CurrentDomain.BaseDirectory);
sTargetImgPath = string.Format("{0}/", "~/Content/Images/Processed");
}
sSourceImgPath = Path.Combine(sAbsoluteImgPath, record.DetectionDatetime.Year.ToString(), record.DetectionDatetime.Month.ToString("D2"), record.DetectionDatetime.Day.ToString("D2"));
Config.LogHelper.Func_WriteEventInLogFile(DateTime.Now.ToLocalTime(), enum_EventTypes.Debug, "Func_GetImages", "Get Images: ",
string.Format("Path to search for files: {0}", sSourceImgPath));
sImageMaskName = record.imageMaskName;
if (!Directory.Exists(sSourceImgPath))
{
Directory.CreateDirectory(sSourceImgPath);
}
//Try to get files with this search pattern
imagesFound = Directory.GetFiles(sSourceImgPath, string.Format("{0}*", sImageMaskName)).ToList();
if (imagesFound.Count > 0)
{
Config.LogHelper.Func_WriteEventInLogFile(DateTime.Now.ToLocalTime(), enum_EventTypes.Debug, "Func_GetImages", "Get Images: Ok",
string.Format("Number of images for record with GUID: {0} is {1}", record.GUID, imagesFound.Count.ToString()));
//Create new image name
DateTime dateCapture = record.DetectionDatetime;
string sImageName = record.imageMaskName;
//Check if day directory exists. If not, create it
Func_CheckOrCreateImageDirectory(dateCapture);
string sBaseDirectory = Path.Combine(sTargetImgPath, dateCapture.Year.ToString(), dateCapture.Month.ToString("D2"), dateCapture.Day.ToString("D2"));
//Rename, add image header and copy blackWhiteImages
Func_ProcessImages(sBaseDirectory, sImageMaskName, sImageName, detection.numPicturesColor, enum_ImagesType.COLOR, detection);
}
else
{
Config.LogHelper.Func_WriteEventInLogFile(DateTime.Now.ToLocalTime(), enum_EventTypes.Error, "Func_GetImages", "Get Images: Ko",
string.Format("No images found for record with GUID: {0} and Image Mask Name: {1}", record.GUID, sImageMaskName));
}
bResult = true;
}
catch (Exception exception1)
{
Config.LogHelper.Func_WriteEventInLogFile(DateTime.Now.ToLocalTime(), enum_EventTypes.Error, new StackTrace(exception1).GetFrame(0).GetMethod().Name, "GeneralException",
"Source = " + exception1.Source.Replace("'", "''") + ", Message = " + exception1.Message.Replace("'", "''"));
}
return bResult;
}
Сообщение журнала, записанное при возникновении проблемы, находится в другом предложении, когда я проверяю, «imagesFound.Count> 0».
Это сообщение об ошибке, которое иногда появляется:
"No images found for record with GUID: 8689ffcd-46d2-4a25-ab57-edce11e45977 and Image Mask Name: 002475-20190702_070949_326".
Спасибо за вашу помощь.