Går det att köra global.asax-koden med codebehind? Och, om det går, finns det någon anledning till varför man bör göra det?
Jag har inte testat och ser än så länge ingen anledning till att göra det om det går. Eftersom jag är lat, så har jag inte brytt mig om detta, men det slog mig att det kanske finns en möjlighet och ett skäl att göra så.
Det går utmärkt, och du bör absolut köra så mycket från code-behind som möjligt. På så sätt skiljer du HTML från din .NET-kod på ett smidigt sätt. Code-behind är även något snabbare än att låta koden stå i en vanlig .aspx fil eller i global.asax. Använder du VS.NET så har du i princip inget val, där kör man stenhårt coe-behind på allt.
Jag använder mig av så mycket codebehind redan, men jag fick för mig att det inte skulle vara nödvändigt att göra det i global.asax. Tji fick jag, lyckligtvis :)
red. VS.NET... det hade ju varit trevligt, men jag sitter faktiskt och skriver allting i HomeSite och kompilerar mina assemblies via bat-filer och kommandoprompten :) Lite bökigt, men jag har fanken i mig full koll på vad det är som pågår ;)
Jag gick en smula bet på den rackaren. Jag hade tänkt att det skulle vara ganska enkelt att stoppa in koden från global.asax nästan direkt in i codebehind. Bara att göra en klass som får ärva HttpApplication, men riktigt så enkelt var det ju inte... (känns som om jag vill ha VS.NET snart ;)) Skulle någon kunna vara så snäll att visa mig tillvägagångssättet? (global.asax med tillhörande global.asax.cs)
red.
Hmm... jag löste det med global.asax, men för cirka 20 minuter sedan dök det upp ett skumt problem och jag vet inte riktigt var det kommer ifrån.
Parser Error Message: Could not load type 'Engine.CGlobal'
Source Error:
Line 1: <%@ Application Codebehind="/codebehind/engine.servehttp.com/global.asax.cs" Inherits="Engine.CGlobal" Debug="True" %>
och min global.asax.cs (som ligger där den ska!)
using System;
using System.Data;
using System.Data.OleDb;
namespace Engine
{
public class CGlobal : System.Web.HttpApplication
{
protected void Session_OnStart(object objSrc, EventArgs e)
{
Session["ConnectionString"] = ...
}
}
}
Innan hade jag med en application_onstart också och det var där någonstans det började hända lurigheter. Fick helt plötsligt ett felmeddelande i den funktionen som hävdade att en referens till ett objekt inte hade satts, så jag tog bort den. Strax efteråt dök det här problemet upp.
Vad jag förstår så hittas inte global.asax.cs, men jag undrar ju lite lätt: hur den kunde tappas bort?
Enligt sista svaret i denna tråd så ska en kod liknande din, Engine^, inte fungera, p g a att du har ett definierat namnområde, namespace. På ReadTheFuckingManual så hjälpte det tydligen att ominstallera .NET framework.
Hur som helst - prova att ta bort namespace Engine och se efter om det fungerar. :)
Jag har lyckats lösa det. Problemet verkar ha varit att min global.asax.cs innehöll ett using direktiv till en annan klass jag håller på att bygga och kompilatorn hittade inte åt den.
Aha! Vad trevligt att det till slut fungerade!
Jag tycker att .NET framework beter sig lite skumt ibland, liksom när jag igår helt plötsligt fick en annan källkod än innan, och med samma .NET-kod. :(
144 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe