2010-07-06 2 views
9

Voglio solo scrivere il codice all'interno dell'assembly per rilevare se è in esecuzione su una "macchina desktop" o nel contesto di un'applicazione ASP.NET. Questo è cruciale ragazzi, (scopi di licenza), e io non voglio essere licenziato perché ho fatto un errore.Come posso rilevare se il mio assembly .NET è in esecuzione da un sito Web o da un computer desktop?

Quindi, per favore, sii diretto e se vuoi darmi qualche frammento di codice.

EDIT: dipendo alle risposte

EDIT v 2.0: Cosa succede ad usare nel montaggio:

[assembly: "AspNetHostingPermission (SecurityAction.RequestRefuge, Unrestricted=true)]" 

per impedire l'esecuzione sul web?

risposta

4

Questo potrebbe essere utile:

How determine if application is web application

+0

Probabilmente hai ragione. Non l'ho cercato e ho visto solo ciò che è stato elencato dopo aver inserito la domanda. Quindi, ti do i crediti. Lo controllerò. Grazie. –

+0

Ora che sto pensando: se qualcuno crea un eseguibile (console) e lo chiama, lo stesso codice sarà comunque valido? Non ho esperienza con ASP.NET e non conosco i trucchi. –

3

Controllare se il HttpContext.Current è nullo e quindi segnalarlo non è in esecuzione come una web app, ad esempio:

if (HttpContext.Current == null) { 
    // Report that it is not running as web app. 
} 

si dovrà fai riferimento a System.Web nei tuoi riferimenti e stai usando una dichiarazione.

+1

Hai un punto. Ho unito la tua proposta al precedente (afolkesson) in una dichiarazione. –

+0

Sì, questo ti aiuterà – ileon

+4

Per esperienza dovrei sottolineare che se controllano HttpContext da un nuovo thread sarà nullo, anche a volte è nullo anche nel thread corrente ... non così affidabile come una variabile ... – VSP