Более стандартный способ сделать это - использовать метод HttpContext.Current:
if (HttpContext.Current == null)
{
// called from windows application
}
else
{
// called from web application
}
Конечно, использование материала, связанного с HttpContext, в не связанных с HTTP слоях вашего приложения - это запах дизайна.Он не только пахнет => воняет.
Более стандартным способом является передача кода в качестве аргумента непосредственно имени файла в качестве аргумента.При вызове из веб-приложения вы передаете Server.MapPath("~/foo.txt")
, а при вызове из приложения Windows - напрямую передаете имя файла относительно текущего исполняемого файла.
Таким образом, ваш код не нужензависеть от каких-либо специфических HTTP-вещей и может успешно использоваться на любой платформе.Вызывающий должен передать ему имя файла, которое должен обработать ваш код.Способ определения имени файла зависит от платформы.Не ваш код ответственности.Не смешивайте обязанности.