Сначала проверяем очевидное ...
При открытии свойства файла и взглянуть на его настройки безопасности. Имеет ли пользователь, выполняющий код (то есть, если это ASP.NET, сетевые службы / учетная запись службы домена), доступ к фактическому удалению файла?
Если это не так, измените его и попробуйте снова.
Вы работаете как администратор, когда пытаетесь удалить это вручную?
Если да, то, вероятно, поэтому вы можете удалить его вручную. Попробуйте удалить его как учетную запись, на которой работает ASP.NET (я предполагаю, что это ASP.NET, поскольку вы используете System.Web.Hosting.HostingEnvironment.MapPath.)
Если оба сбоя, попробуйте посмотреть, действительно ли какой-либо другой процесс в настоящее время использует этот файл. Хороший инструмент, чтобы узнать это SysInternal Process Monitor. Отфильтруйте его по пути, содержащему ваше имя файла, и вы должны увидеть, если оно используется. Завершите процесс и попробуйте снова.