Avatar billede nielsbrinch Nybegynder
26. juli 2004 - 15:12 Der er 19 kommentarer og
1 løsning

Application_Start uden brugerindblanding

Første gang jeg gør noget i min ASP.NET-applikation, efter jeg har kompileret, bliver Application_Start kørt.

Jeg kunne godt tænke mig at Application_Start blev kørt med det samme IIS'en startede eller programmet blev rekompileret. Altså uden indblanding fra brugeren. Det skal være en webapplikation. (Jeg kan ikke lægge et eller andet i "startup"-folderen på serveren)

Hvilke muligheder har jeg for at gøre det?
Avatar billede snepnet Nybegynder
26. juli 2004 - 22:15 #1
Application_start køres når applikationen starter... Jeg kan ikke rigtig se hvordan det skulle være muligt at snable på om IIS-en starter fra en applikation der kun kan startes af IIS-en..... Det er sådan lidt hønen og ægget agtigt :o)

Hvorfor vil du gerne have kørt application_start når IIS-en starter... Det virker som et lidt specielt behov.

Mvh
Avatar billede nielsbrinch Nybegynder
27. juli 2004 - 10:19 #2
Det er fordi min ASP.NET applikation består af en tråd der skal køres engang imellem. Men den tråd går aldrig i gang, hvis man ikke har været inde på en aspx og klikke på et eller andet. Jeg starter tråden i Application_Start.
Avatar billede snepnet Nybegynder
27. juli 2004 - 10:34 #3
Hvad laver tråden ?
Avatar billede nielsbrinch Nybegynder
27. juli 2004 - 15:55 #4
Lidt forskellige ting - slår op i databaser, sender mails rundt m.m.

Det skal køres i en .NET-applikation. Jeg kan ikke lægge det ind i SQLServer f.eks...
Avatar billede snepnet Nybegynder
27. juli 2004 - 16:02 #5
Kan du lægge det ind i en service ?
Avatar billede nielsbrinch Nybegynder
27. juli 2004 - 16:43 #6
Helst ikke, men jo, jeg har den adgang til serveren det kræver. Hvordan lægger jeg en ASP.NET-applikation ind som en service?
Avatar billede snepnet Nybegynder
27. juli 2004 - 16:55 #7
Jeg har stadig lidt svært ved at se, at det skulle være nødvendigt at eksekvere kode fra en web-applikation, hvis der ikke er nogen der bruger den - jeg er nok lidt tung i det :o)

Hvis du bruger visual studio er der en projekttype der hedder windows-service... Den sætter selv et skelet op til dig, hvor du sådan set bare kan udfylde hullerne :o) - det er helt ukompliceret.
At få lavet en installer til den af visual studsio er lige så nemt.
Avatar billede nielsbrinch Nybegynder
27. juli 2004 - 17:22 #8
ja det er klart, men det skulle jo gerne være en webapplikation, da jeg vil kunne tilgå den fra en aspx.
Avatar billede burningice Nybegynder
28. juli 2004 - 06:28 #9
hehe... jeg har lidt samme problem/behov. Jeg har en tråd der cacher alle mine data fra databasen som startes i Application_Start. Det tager omkring 1-2 minutter at køre tråden, hvilket gør, at den første bruger der besøger hjemmesiden vil opleve den som noget langsom :( Havde været smartere at få startet den tråd så snart at IIS var oppe at køre, eller lign. Problemet opstår jo også når at IIS recycler min Worker-process, så forsvinder cachen og skal genopbygges.

Har dog kigget lidt på noget serialization og Application_End-eventet, men man er vel doven ;)
Avatar billede nielsbrinch Nybegynder
28. juli 2004 - 09:39 #10
Det mest lokkende jeg har hørt indtil videre, er at lave det til en Windows service, men så mangler jeg bare en måde at tilgå den Windows service fra min webapplikation som ligger på samme server.
Avatar billede snepnet Nybegynder
28. juli 2004 - 09:43 #11
Du kan sagtens tilgå en windowsservice fra et web... Det er ikke noget problem
Avatar billede nielsbrinch Nybegynder
28. juli 2004 - 09:43 #12
Med Remoting?
Avatar billede snepnet Nybegynder
28. juli 2004 - 09:49 #13
Du kan bruge en forekomst af System.ServiceProcess.ServiceController til det.
Avatar billede snepnet Nybegynder
28. juli 2004 - 09:51 #14
Du kan lige få et eksempel fra msdn her :
ServiceController[] scDevices;
scDevices = ServiceController.GetDevices();

int numAdapter = 0,
    numFileSystem = 0,
    numKernel = 0,
    numRecognizer = 0;
     
// Display the list of device driver services.
Console.WriteLine("Device driver services on the local computer:");

foreach (ServiceController scTemp in scDevices)
{
  // Display the status and the service name, for example,
  //  [Running] PCI Bus Driver
  //            Type = KernelDriver

  Console.WriteLine(" [{0}] {1}",
                    scTemp.Status, scTemp.DisplayName);
  Console.WriteLine("          Type = {0}", scTemp.ServiceType);

  // Update counters using the service type bit flags.
  if ((scTemp.ServiceType & ServiceType.Adapter) != 0)
  {
      numAdapter++;
  }
  if ((scTemp.ServiceType & ServiceType.FileSystemDriver) != 0)
  {
      numFileSystem++;
  } 
  if ((scTemp.ServiceType & ServiceType.KernelDriver) != 0)
  {
      numKernel++;
  }
  if ((scTemp.ServiceType & ServiceType.RecognizerDriver) != 0)
  {
      numRecognizer++;
  }

}
Avatar billede nielsbrinch Nybegynder
28. juli 2004 - 09:54 #15
Jeg kan ikke umiddelbart se hvad det er der foregår, eller hvordan man skal kunne benytte det. Men jeg prøver at grave lidt dybere.
Avatar billede snepnet Nybegynder
28. juli 2004 - 10:04 #16
Den henter en liste over alle device driver services, men det er måske egentlig et latterligt eksempel.

Du kan på en serveiccontroller angive et maskinnavn, og et servicenavn, og det er jo så snildt når du kender servicen i forvejen (det skulle så være den du selv har lavet).

Der er så en masse standardmetoder på en servicecontroller... start/stop og den slags.
Avatar billede nielsbrinch Nybegynder
28. juli 2004 - 10:11 #17
Tak. Jeg har læst lidt mere om det også selv. Det må være den bedste løsning på problemet. (det kan ENDDA! bruges til cyberfessors problem, det er dog knap så oplagt)

Tid til at få spørgsmålet lukket.
Avatar billede snepnet Nybegynder
28. juli 2004 - 10:13 #18
Lukker du det bare, eller vil du have et svar ?
Avatar billede snepnet Nybegynder
28. juli 2004 - 10:14 #19
Du får et her... så kan du jo afvise hvis det er :o)
Avatar billede nielsbrinch Nybegynder
28. juli 2004 - 10:15 #20
Eftersom du hjalp og kom med det rigtige svar, synes jeg det ville være en kjende uhøfligt at afvise det ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester