ASPNL logo (1 kb)
Saturday, February 04, 2012




Microsoft MVP

.NET Codewise Community
VRAAG EN ANTWOORD

Hieronder vind je een overzicht van veel gestelde vragen. Omdat deze vragen en antwoorden zo goed mogelijk moeten helpen in nood en ze echt "veel gesteld" moeten zijn zoeken wij de hulp van mensen die dagelijks ASP en/of .NET gebruiken. Dus weet jij een goede vraag (met antwoord), stuur die dan op naar info@aspnl.com

Staat jouw vraag hier niet bij, dan is er misschien wel een artikel of les die uitkomst biedt. En anders kun je altijd een vraag stellen op ons forum

Er zijn veel gestelde vragen in de volgende rubrieken:
ASP.NET

ASP:
- Algemeen
- MS Access
- SQL Servers
- Mail
- Client
- Server


ASP.NET
Wat is ASP.NET?
Wat heb ik nodig voor ASP.NET?
Hoe installeer ik ASP.NET?
Kan je ASP en ASP.NET naast elkaar draaien zonder dat bestaande applicaties in de problemen komen?
Ik krijg de volgende foutmelding:
Access denied to 'c:\inetpub\wwwroot' directory. Failed to start monitoring directory changes.
Wat is er aan de hand?

Hoe los je deze foutmeldingen op in ASP.NET:
Microsoft JET Database Engine ; Operation must use an updateable query
Microsoft JET Database Engine ; De bewerking moet worden uitgevoerd op een query die kan worden bijgewerkt.


ASP - ALGEMEEN
Wat is ASP?
Wat heb ik nodig voor ASP?
Hoe installeer ik ASP?
Ik wil graag dynamisch bestanden includen maar met <!--#include werkt het niet.
Mijn cookies worden niet onthouden, als ik mijn browser sluit dan zijn ze verdwenen, hoe kan dat?
Session.Abandon leegt de Session niet goed, is dit een bug?
Hoe kan ik de URL van een bezoeker uitlezen?
Ik krijg de engelse datum notatie terwijl ik de Nederlandse wil hebben.
Is het mogelijk om met behulp van ASP een bestand te hernoemen?
Hoe kan ik controleren of een bezoeker cookies aan heeft staan of niet?
Is er een tool voor het omzetten van een ASP applicatie naar een CD-ROM versie (dus stand-alone single user)?

ASP - MS ACCESS
Ik krijg de volgende foutmelding als ik een record wil wijzigen/toevoegen:
[Microsoft][ODBC Microsoft Access Driver] Operation must use updateable query
Ik heb speciale karakters in m'n query/update/insert, waardoor die niet goed werkt.

ASP - SQL SERVER
Is het mogelijk om MySQL in combinatie met ASP te gebruiken?
Zo ja: hoe moet ik dan de connectie met de database maken?

Hoe kom ik makkelijk en snel achter het id van een zojuist toegevoegd record in een SQL database?

ASP - MAIL
Ik wil e-mail versturen vanaf een pagina, hoe doe ik dat?
Hoe kan ik een bijlage versturen met CDONTS?
Ik wil email versturen met CDONTS, maar ik krijg de melding Server object error 'ASP 0177:800401f3'.

ASP - CLIENT
Ik wil waardes uit mijn script in ASP gebruiken in een Javascript in de browser, kan dit?
Kan ik ervoor zorgen dat bezoekers mn HTML niet kunnen zien met View Source?
Ik wil dat een pagina automatisch (of door het klikken op een knop) geprint wordt, hoe doe ik dat?

ASP - SERVER
Kan ik ASP installeren op een PC met XP Home Edition?

ASP.NET
Wat is ASP.NET?
ASP.NET is de opvolger van ASP en onderdeel van het .NET Framework van Microsoft. Meer informatie vind je in de gratis les Wat is ASP.NET?
Wat heb ik nodig voor ASP.NET?
Wat je nodig hebt vind je in de gratis les Wat heb ik nodig voor ASP.NET?
Hoe installeer ik ASP.NET?
Hoe je ASP.NET installeert vind je in de gratis les ASP.NET installeren.
Kan je ASP en ASP.NET naast elkaar draaien zonder dat bestaande applicaties in de problemen komen?
Ja, dat kan.
Het enige wat je hoeft te doen voor ASP.NET is de .NET Framework redistributable te installeren. Daarna kun je zowel .asp (ASP) als .aspx (ASP.NET) bestanden maken, zelfs in dezelfde map. Het zijn wel twee afzonderlijke dingen, dus je kunt bijvoorbeeld niet het Session object van ASP uitlezen onder ASP.NET.
Ik krijg de volgende foutmelding:
Access denied to 'c:\inetpub\wwwroot' directory. Failed to start monitoring directory changes.
Wat is er aan de hand?

ASP.NET werkt onder een apart user account (ter beveiliging met weinig rechten). Dit account moet rechten hebben op de map waarin het ASP.NET bestand staat dat je wil uitvoeren, ook heeft het rechten nodig om dat bestand te mogen uitvoeren. Je kunt dit aanpassen via de eigenschappen van de map en de bestanden. Zie http://www.asp.net/security.aspx voor meer informatie.
Hoe los je deze foutmeldingen op in ASP.NET:
Microsoft JET Database Engine ; Operation must use an updateable query
Microsoft JET Database Engine ; De bewerking moet worden uitgevoerd op een query die kan worden bijgewerkt.

Deze foutmelding treedt op wanneer de ASP.NET account, die IIS gebruikt om ASP.NET paginas uit te voeren, geen schrijftoegang heeft tot jouw database. De oplossing bestaat er in het proces schrijftoegang te geven tot de directory waarin jouw Access database bestand staat (.mdb bestand). De stappen hiertoe worden hieronder beschreven.

Indien je Windows XP gebruikt, dan moet je eerst de simpel file sharing optie uit schakelen. Dit doe je als volgt:
  • Start Windows Verkenner
  • Ga naar het menu Extra, vervolgens naar Mapopties
  • Klik op de tab weergave
  • Deactiveer de optie "eenvoudig delen van bestanden gebruiken"
  • Klik op OK

Wanneer je nu rechts klikt op een map zie je een nieuwe optie : "delen en beveiliging".

In tweede fase moet je het ASP.NET proces toegang geven tot jouw database. Hiervoor ga je in Windows Verkenner naar de map waarin jouw database staat. Klik rechts op deze map en kies "eigenschappen". Ga vervolgens naar de tab "beveiliging". Vervolgens klik je op "Toevoegen". Vul bij objectnaam <uw_pc_naam>\ASPNET in. Deze account wordt ook wel de aspnet_wp account genoemd, of de ASP.NET Machine account. Klik vervolgens op OK. Bij "machtigingen" klik je "wijzigen" en "schrijven" aan. Klik nogmaals OK.

Nu heb je ASP.NET schrijftoegang gegeven tot jouw database. Je kan nu jouw database gebruiken in jouw webapplicatie.


ASP - ALGEMEEN
Wat is ASP?
ASP is een technologie waarmee dynamische websites gemaakt kunnen worden. Meer informatie vind je in de gratis les Wat is ASP?
Wat heb ik nodig voor ASP?
Wat je nodig hebt vind je in de gratis les Wat heb ik nodig voor ASP?
Hoe installeer ik ASP?
Hoe je ASP installeert vind je in de gratis les ASP installeren.
Ik wil graag dynamisch bestanden includen maar met <!--#include werkt het niet.
Klopt, het is namelijk zo dat wanneer je in een asp file <!--#include file="page1.asp"--> hebt staan, IIS eerst die pagina er tussen plakt en pas daarna parst (uitvoert). Een oplossing zou zijn om het met een If...Else...End If te doen. Dit is echter geen goede oplossing omdat IIS dan eerst alle include bestanden er in plakt en pas daarna de hele asp pagina parst. Ok, het zal werken maar het is alles behalve efficint en het belast de webserver behoorlijk.
Een betere oplossing is Server.Execute.
Voorbeeld:
If Request.Cookies("member")="ja"
Then
Server.Execute("member_ja.asp")
Else
Server.Execute("member_nee.asp")
End If

Of nog dynamischer:
Server.Execute("member_" & Request.Cookies("member") & ".asp")

Let op: Voor Server.Execute heb je wel een Windows 2000 server (of hoger, XP) nodig. Het wordt dus niet ondersteund door WinNT.
Mijn cookies worden niet onthouden, als ik mijn browser sluit dan zijn ze verdwenen, hoe kan dat?
Dit wordt waarschijnlijk veroorzaakt doordat de expire date niet opgegeven wordt. Wanneer dit niet meegegeven wordt zal het cookie niet bewaard worden. Een goed voorbeeld van hoe je cookies zet kun je vinden op http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html/psdk/asp/vbob87j9.asp
Session.Abandon leegt de Session niet goed, is dit een bug?
Nee, als je een Session met de naam "testSes" hebt en je hebt die gevuld op page1.asp en in page2.asp zet je op regel 5 Session.Abandon dan is Session("testSes") nog in de volledige pagina op te roepen. Echter zal de Session op page3.asp wel helemaal leeg zijn.
Hoe kan ik de URL van een bezoeker uitlezen?
Dat kan als volgt:

Dim adres1, adresgevolg, adresip
adres = Request.ServerVariables("HTTP_REFFERER") ' vraagt de link op
adresgevolg = Request.ServerVariables("QUERYSTRING") ' vraagt alles op na het ?
adresip = Request.ServerVariables("REMOTE_ADDR") ' vraagt het host ip van de bezoeker

Response.write "de bezoeker kwam vanuit deze link -> " & adres & "?" & adresgevolg
Response.Write "Het host IP van de bezoeker = " & adresip

De gegevens die je verkrijgt via HTTP_REFFERER zijn niet altijd betrouwbaar. Het IP adres kan evengoed dat van een proxy zijn, of kan gewoon blanco zijn.
Ik krijg de engelse datum notatie terwijl ik de Nederlandse wil hebben.
Zet in de eerste regel van je pagina Session.LCID=1043 (voor Belgi 2067). Een lijst met codes vind je op http://www.123hostnow.com/articles/LCID.asp Meer uitleg vind je in het artikel: Nederlandse datum en getalnotatie
Is het mogelijk om met behulp van ASP een bestand te hernoemen?
Zeker, op de volgende wijze:

Call Rename("filename.html","newname")

sub Rename(Oldname,Newname)
Dim Fsren,Fs
Set Fsren = CreateObject("Scripting.FileSystemObject")
If (Fsren.FileExists(server.MapPath ("images/photos") & "\" & oldname))
Then Set Fs = FsRen.GetFile(server.MapPath ("images/photos") & "\" & oldname )
StrTotLength = len(fs)
IntPos1 = inStrRev(Fs,"\")
Pos1 = StrTotLength-intPos1
File = Right(Fs,Pos1)
IntPos2 = inStrRev(File,".")
Fsize = len(File)
Pos2 = Fsize-intPos2
Ext = right(Fs,Pos2+1)
Extsize = len(Ext)
Filekaal = left(File,Len (File) - (Extsize ))
Fs.Name = newname & Ext
Set Fsren = Nothing
Else
Response.Write ("The File does not exists")
Set Fsren = Nothing
End If
End sub

Het enige wat verder nog moet worden gewijzigd is het padnaam in de server.MapPath string...
Hoe kan ik controleren of een bezoeker cookies aan heeft staan of niet?
Je moet hiervoor 2 pagina's aanmaken. In de eerste pagina (Page1.asp) creer je een cookie, waarbij je de gebruiker doorstuurt naar de tweede pagina (Page2.asp). In de tweede pagina controleer je dan of de cookie er is. Als de cookie er is, dan heeft de gebruiker cookies aanstaan, anders niet. Zie voor een uitgebreidere uitleg ook o.a.:
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=29

Is er een tool voor het omzetten van een ASP applicatie naar een CD-ROM versie (dus stand-alone single user)?
Ja.
Active Local Pages verwerkt ASP pagina's lokaal (bijvoorbeeld van een CDROM), alsof je een webserver hebt, zie: http://www.newobjects.com/alp


ASP - MS ACCESS
Ik krijg de volgende foutmelding als ik een record wil wijzigen/toevoegen:
[Microsoft][ODBC Microsoft Access Driver] Operation must use updateable query

De recordset die je geopend hebt is mogelijk alleen-lezen. Dit zijn de standaard instellingen als je een recordset opent, tenzij je anders specificeert. Wanneer je probeert een record toe te voegen of te wijzigen in een alleen-lezen recordset, volgt deze melding.

ASP moet ook rechten hebben om de database met schrijfrechten te openen. Controleer of de IUSR (de gebruiker waaronder ASP werkt) schrijfrechten heeft in de map waarin de database staat en op de database zelf.

Meer over dit probeem vind je hier.

Ik heb speciale karakters in m'n query/update/insert, waardoor die niet goed werkt.
Vooral ' karakters geven problemen. Je kunt deze vervangen, maar dan kun je er niet meer op zoeken. Je kunt ze ook vervangen door het karakter twee keer achter elkaar te zetten, zodat de database weet dat het om een ' gaat. De database zet dan zelf maar n ' in de database. Een andere oplossing is gebruik te maken van het recordset object (traag), parameter queries of stored procedures.

ASP - SQL SERVER
Is het mogelijk om MySQL in combinatie met ASP te gebruiken?
Zo ja: hoe moet ik dan de connectie met de database maken?

Ja, dat is mogelijk.
Je dient twee dingen te doen:
-ODBC driver installeren. Deze kan je downloaden via:
http://www.mysql.com/downloads/api-myodbc.html
-De juiste connection string gebruiken, zie:
http://www.able-consulting.com/MDAC/ADO/Connection/ODBC_DSNLess.htm#ODBCDriverForMySQL
Verder kun je dan gewoon werken als met elke andere database.

Kleine noot: MySQL is gratis voor NIET COMMERCIEEL gebruik. Anders dien je ook een licentie aan te schaffen. De meeste mensen schijnen te denken dat MySQL voor alles gratis is.
Hoe kom ik makkelijk en snel achter het id van een zojuist toegevoegd record in een SQL database?
Het beste gaat dit met @@IDENTITY.
Dan kun je namelijk tegelijkertijd met jouw insert statement het id opvragen. Voorbeeld: "SET NOCOUNT ON; INSERT INTO tabelnaam (Voornaam, Achternaam) VALUES ('Rutger','Smit'); SELECT @@IDENTITY AS lastID;"
Vervolgens execute je de query en kun je daarna het nieuwe id opvragen met RS.Fields("lastID").Value(er vanuitgaande dat RS jouw RecordSet is).

ASP - MAIL
Ik wil e-mail versturen vanaf een pagina, hoe doe ik dat?
Zie hiervoor het artikel "E-mails versturen via CDONTS"
Hoe kan ik een bijlage versturen met CDONTS?
<%
Set Mail = Server.CreateObject("CDONTS.Newmail")
Mail.From = "mijnemail@mijndomein.com"
Mail.To = "ontvanger@ergens.nl"
Mail.Body = "Dit bericht heeft een bijlage!"
Mail.AttachFile("C:\Figuren\Plaatje.jpg")
Mail.Send
%>
Ik wil email versturen met CDONTS, maar ik krijg de melding Server object error 'ASP 0177:800401f3'.
Ten eerste moet je ervoor zorgen dat de SMTP Service genstalleerd is. Dit is een optie die standaard geinstalleerd wordt als je IIS of PWS installeert. Vanaf Windows 2000 heeft CDONTS een andere naam gekregen (CDOSYS) en is ook het gebruik enigszins veranderd, zie http://support.microsoft.com/default.aspx?scid=kb;EN-US;q195683 en www.nextmill.net/support/CDOSYSW2000.html

ASP - CLIENT
Ik wil waardes uit mijn script in ASP gebruiken in een Javascript in de browser, kan dit?
Ja, je kunt net zo goed Javascript als HTML genereren met ASP. Je kunt de server en client scripts niet combineren, dus je moet echt alles wat je wil bereiken in de browser verzorgen in het script dat je genereert.
Kan ik ervoor zorgen dat bezoekers mn HTML niet kunnen zien met View Source?
Nee, je kunt het de bezoeker wel moeilijker maken door bijvoorbeeld met Javascript de rechter muisknop uit te schakelen. De bezoeker kan hier echter makkelijk omheen door bijvoorbeeld met een oude browser (zonder Javascript) de pagina te openen, of door de pagina eerst op te slaan en dan met Notepad te openen.
Ik wil dat een pagina automatisch (of door het klikken op een knop) geprint wordt, hoe doe ik dat?
In de <BODY> tag van de pagina:
<BODY onLoad="javascript:window.print();">
Dan komt er automatisch een print scherm naar voren.

ASP - SERVER
Kan ik ASP installeren op een PC met XP Home Edition?
PWS (en dus ASP) kan officieel niet op Windows XP Home Edition geïnstalleerd worden. Een niet door Microsoft ondersteunde oplossing kun je echter wel gebruiken (zie Hoe IIS installeren op Windows XP Home?), of http://www.15seconds.com/issue/020118.htm
^ naar boven
copyright 2000-2007 ASPNL