Как определить, является ли исполняемая сборка веб-приложением или winform / console? - PullRequest
7 голосов
/ 16 апреля 2010

Я хотел бы написать вспомогательную функцию, которая создаст сообщение об исключении для записи в журнал. Код выглядит так:

если (IsWebApp)
{

используйте HttpContext, чтобы получить Путь запроса и RawUrl }
еще
{
// иначе это winform / console
Используйте сборку, чтобы получить исполняемый путь.

}

Ответы [ 5 ]

12 голосов
/ 16 апреля 2010

Используйте класс HttpRuntime :

if (!String.IsNullOrEmpty(HttpRuntime.AppDomainAppVirtualPath))
    //ASP.Net
else 
    //Non-ASP.Net
1 голос
/ 16 апреля 2010

Просто проверьте наличие какого-либо объекта, который существует только в веб-приложении, например HttpRuntime.AppVirtualPath, который предложил SLaks.

Если это веб-приложение, вы все равно хотите проверить, является ли HttpContext.Current нулевым. Если исключение возникает в коде, который не выполняется из-за запроса, он не имеет никакого контекста. Например, событие Session_OnEnd запускается при удалении сеанса сервера, поэтому оно не имеет контекста.

0 голосов
/ 16 октября 2015

Я использую тип текущего домена приложений DomainManager . MSDN документация AppDomainManager

public static class AspContext
{
    public static bool IsAspNet()
    {
        var appDomainManager = AppDomain.CurrentDomain.DomainManager;
        return appDomainManager != null && appDomainManager.GetType().Name.Contains("AspNetAppDomainManager");
    }
}

Вы также можете проверить этот другой ответ на SO

0 голосов
/ 16 апреля 2010

Как насчет

If (Not System.Web.HttpContext.Current Is Nothing) Then

End If

или

if(System.Web.HttpContext.Current != null){

}
0 голосов
/ 16 апреля 2010

Вы можете проверить, является ли HttpContext.Current! = Null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...