webForumDet fria alternativet

få fram sida i global.asax

.NET

6 svar · 301 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#1

Kan man i

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   
}

få fram vilken sida det är som requesten är åt.

red// En fråga till.

Varför funkar inte detta.

using GlobalASAX = ASP.global_asax;

får felet

The type or namespace name 'ASP' could not be found (are you missing a using directive or an assembly reference?)

Om det är för att det inte finns någon reference i projektets References i Solution Explorer, hur lägger jag då till den?

Medlem sedan maj 2001329 inlägg
#2

Svarar på A eftersom jag inte fattar vad du försöker göra på b :)

Det går att frå fram med,

Request.Url

med

Request.UrlReferrer

kan du få fram från vilken sida man kom från. Den sist nämnde kan dock vara null om den inte vet vart man kom från.

Medlem sedan sep. 20011 914 inlägg
#3

Ok, tack för svaret på första frågan. Det funkar fint. :)

Vidareutveckling av fråga 2:
I global.asax.cs så har jag en statisk variabel.

public static int hihihi;

och i en xxx.aspx.cs så vill jag komma åt denna variabeln. Och då skall man kunna komma åt den via

ASP.global_asax.hihihi.ToString()

men det vill sig inte. Det spelar egentligen ingen roll att jag försöker förenkla med using, direkt accesen som i koden ovan skiter sig ändå.

Medlem sedan dec. 20003 887 inlägg
#4

Jag vet inte om du kan ta fram det redan i BeginRequest, men det kan väl gå ;)

Om man kollar på händelseförloppet för en request i HttpApplication ser man följande:
BeginRequest -> AuthenticateRequest -> AuthorizeRequest -> ResolveRequestCache: Här skapas ett Handle till sidan som skickade requesten. Jag kan tänka mig att det är bättre att använda det eventet för att få tag på url:en till sidan.

Medlem sedan maj 2001329 inlägg
#5

ah..

Är du säker på att din Global ligger i namespacet ASP då? Det borde vara det som är fel.

[kod]
namespace myNamespace {
public class Global : System.Web.HttpApplication {
internal static int test = 1;
[kod]

Det övre funkar för mig. Bara att skriva,

myNamespave.test

Antar att du vet att man kan använda applikationsvariabler eller appsettings också för att ha variabler som är åtkomstbara över hela applikationen.

Medlem sedan juni 20022 599 inlägg
#6

Dino skrev:

Det spelar egentligen ingen roll att jag försöker förenkla med using, direkt accesen som i koden ovan skiter sig ändå.

Du kommer åt den som Global.hihihi.

Medlem sedan sep. 20011 914 inlägg
#7

Tackar igen (red// båda två), så skulle det självklart vara.

Antar att du vet att man kan använda applikationsvariabler eller appsettings också för att ha variabler som är åtkomstbara över hela applikationen.

Jo, men det skall vara mycket snabbare att få fram datan så här, än om jag har den i applikationsvariabler.

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)