Ответ 1
Если у вас уже есть физический путь, нет смысла называть Server.MapPath
.
Вы дважды вызываете MapPath
.
У меня есть эта функция, которая получает fileData как массив байтов и путь к файлу. Ошибка, которую я получаю, это когда он пытается установить fileInfo в коде bewlo. В нем говорится "Указанный физический путь, ожидаемый виртуальный путь"
public override void WriteBinaryStorage(byte[] fileData, string filePath)
{
try
{
// Create directory if not exists.
System.IO.FileInfo fileInfo = new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(filePath)); //when it gets to this line the error is caught
if (!fileInfo.Directory.Exists)
{
fileInfo.Directory.Create();
}
// Write the binary content.
System.IO.File.WriteAllBytes(System.Web.HttpContext.Current.Server.MapPath(filePath), fileData);
}
catch (Exception)
{
throw;
}
}
При отладке он предоставляет filePath как "E:\\WEBS\\webapp\\default\\images\\mains\\myimage.jpg"
. И сообщение об ошибке
'E:/WEBS/webapp/default/images/mains/myimage.jpg' is a physical path, but a virtual path was expected.
Кроме того, что это за запуск, это следующий вызов
properties.ResizeImage(imageName, Configurations.ConfigSettings.MaxImageSize, Server.MapPath(Configurations.EnvironmentConfig.LargeImagePath));
Если у вас уже есть физический путь, нет смысла называть Server.MapPath
.
Вы дважды вызываете MapPath
.
В:
string[] filesPath = Directory.GetFiles(Server.MapPath("~/txtPath/"));
foreach (string path in filesPath)
{
FileInfo fi = new FileInfo(path); //This Is Working
string LastAcceTime = fi.LastWriteTime; //Return Correct Value
}
Не работает:
string[] filesPath = Directory.GetFiles(Server.MapPath("~/txtPath/"));
foreach (string path in filesPath)
{
FileInfo fi = new FileInfo(Server.MapPath(path)); //This Is Worng
string LastAcceTime = fi.LastWriteTime; //Return 1/1/1601
}
Не используйте Server.Mappath
дважды
Я полагаю, что ваш проект находится по адресу:
E:\WEBS\\webapp\
Вам следует попытаться использовать относительные ссылки на ваши изображения, например.
..\default\images\mains\myimage.jpg