Avatar billede i-mox Nybegynder
11. maj 2012 - 14:12 Der er 25 kommentarer og
1 løsning

Fange indhold fra databasedreven ASP side i C#

Jeg sidder og prøver at fange indholdet af en databasedreven ASP side i C#.

Selve siden (fileName) som jeg forsøger at læse indeholder et udtræk fra en database. Når jeg bruger nedenstående kode, så læser den selve kildekoden til ASP siden, men den læser ikke den genererede HTML, og det er den, jeg er interesseret i.

WebResponse objResponse;
  WebRequest objRequest = HttpWebRequest.Create(fileName);
  objResponse = objRequest.GetResponse();
  StreamReader areader = new StreamReader ((objResponse.GetResponseStream()));
  a = areader.ReadToEnd ();

Nogen genier, der let kan modificere koden, så den læser indholdet og ikke kildekoden? (Jeg er i øvrigt ikke vant til c# overhovedet...)
Avatar billede arne_v Ekspert
11. maj 2012 - 14:34 #1
Det er ikke et problem i din C# kode.

Det er et problem i den web site du henter fra. Den er katastrofalt daarligt konfigureret.

Faa dem til at fixe det.

Gerne inden hackere udnytter det til at hapse den database der er bagved.
Avatar billede i-mox Nybegynder
11. maj 2012 - 14:52 #2
Hehe - ja, det ville være et problem, hvis ikke det hele lå lokalt på min maskine og blev drevet af en webmatrix-installation. Der er mao ikke hul igennem til omverdenen.

Har du evt. en idé om, hvordan jeg får HTML-indholdet og ikke kildekoden?
Avatar billede arne_v Ekspert
11. maj 2012 - 15:23 #3
Er det ASP eller ASP.NET?

Hvis ASP skal du nok ind og enable ASP i IIS.
Avatar billede i-mox Nybegynder
11. maj 2012 - 15:31 #4
Det er good ol' ASP.

Og ASP burde være enablet. Selve den side, jeg forsøger at fange, bliver afviklet fint, når jeg bare tilgår den i en almindelig browser. Det er kun, når jeg forsøger at fange koden som nu, at jeg får kildekoden hevet ud.
Avatar billede arne_v Ekspert
11. maj 2012 - 15:44 #5
Nu kigger jeg lidt paa koden.

WebRequest objRequest = HttpWebRequest.Create(fileName);

Indeholder variablen fileName en URL som den skal eller et filnavn som den ikke skal?
Avatar billede erikjacobsen Ekspert
11. maj 2012 - 15:45 #6
Hvad står der i fileName ?
Avatar billede i-mox Nybegynder
11. maj 2012 - 16:16 #7
fileName henviser til en asp side (der hedder read.asp), der har følgende indhold (+ lidt body osv):

    <%
        set db=Server.Createobject("ADODB.Connection")
        db.open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & server.mappath("/App_Data/Olsen.accdb")
        strSQL = "SELECT tekst,titel FROM tblArtikler WHERE id = 593"
        set rsArtikel = db.execute(strSQL)
        response.write(unescape(rsArtikel("titel"))&"<br>")
        response.write(unescape(rsArtikel("tekst"))&"<br>")
    %>

Lige pt. er det skrevet statisk, men det er meningen, at jeg vil medsende et parameter med idnr.
Avatar billede i-mox Nybegynder
11. maj 2012 - 16:17 #8
Det er denne kode, jeg får vist, når jeg afvikler...
Avatar billede arne_v Ekspert
11. maj 2012 - 16:23 #9
Indeholder fileName:
  http://localhost/read.asp
eller:
  C:\dir\read.asp
?
Avatar billede i-mox Nybegynder
11. maj 2012 - 16:44 #10
Nej.

Filename henviser til en non-physical-path. Jeg har forsøgt at ændre det til fysisk sti, men det vil scriptet ikke acceptere (og jeg er som sagt ikke skide stærk i C#)
Avatar billede arne_v Ekspert
11. maj 2012 - 17:00 #11
Hvis du vil beholde hvad fileName indeholder som en hemmelighed, saa tror jeg ikke at vi kommer videre her.
Avatar billede i-mox Nybegynder
12. maj 2012 - 11:16 #12
Kære Arne,

Jeg vil bestemt ikke holde det som hemmelighed. Selve filen ligger som sagt lokalt på min maskine, men C#-koden, der fanger fileName er her:

fileName = Server.MapPath("~/Diff/txtfiles/" + OldFileName.Replace("\\", "").Replace("/", ""));

OldFileName er et parameter, der bliver overført i URL'en. Problemet er så, at den fil, som den fanger og læser ikke bliver afviklet som ASP. Men den læser kildekoden.
Avatar billede erikjacobsen Ekspert
12. maj 2012 - 12:17 #13
Dvs. der står ikke  http://localhost/    foran, og dermed bliver koden ikke afviklet i webserveren. Du skal lave det om til den tilsvarende URL, måske:  http://localhost/Diff/txtfiles/...noget...
Avatar billede erikjacobsen Ekspert
12. maj 2012 - 12:18 #14
Nå, der blev indlægget lige beskåret. Fortsætter:

Du skal lave det filnavn om til den tilsvarende URL, måske:

  http://localhost/Diff/txtfiles/...noget...
Avatar billede i-mox Nybegynder
12. maj 2012 - 12:25 #15
Det vil den ikke acceptere. Den siger:
'http:/localhost:20855/Diff/SampleFiles/readOne.asp' is not a valid virtual path.
:-(
Avatar billede erikjacobsen Ekspert
12. maj 2012 - 12:38 #16
Og derfor skal du selvfølgelig finde den rigtige URL. Det er blot hvad du skal skrive i en browser for at se output fra din .asp-fil
Avatar billede i-mox Nybegynder
12. maj 2012 - 14:52 #17
Det er også det, jeg har gjort.

http:/localhost:20855/Diff/SampleFiles/readOne.asp

Giver det output, som den skal. Det hele kører lokalt på min maskine på en webmatrix-installation.
Avatar billede i-mox Nybegynder
12. maj 2012 - 15:10 #18
OK - nu tror jeg, jeg forstår, hvad du mener.

Jeg har nu hardcodet fileName til
http:/localhost:20855/Diff/SampleFiles/readOne.asp

Og nu får jeg en anden fejl:
The Authority/Host could not be parsed.

Exception Details: System.UriFormatException: Invalid URI: The Authority/Host could not be parsed.
Line 115:  WebRequest objRequest = HttpWebRequest.Create(fileName);

Progress :-) Er det noget sikkerhedsnoget, der gør, at den ikke må læse en ASP-fil? Hvilket jo er underligt, for den måtte gerne læse kildekoden, da det var en relativ sti.
Avatar billede i-mox Nybegynder
12. maj 2012 - 15:16 #19
Og lidt mere test afslører, at den godt vil læse eksternt-databasedrevent asp-indhold. Hmm... Gode forslag modtages med kyshånd.
Avatar billede arne_v Ekspert
12. maj 2012 - 16:31 #20
http:/localhost:20855/Diff/SampleFiles/readOne.asp

skal ihvertfald vaere

http://localhost:20855/Diff/SampleFiles/readOne.asp
Avatar billede erikjacobsen Ekspert
12. maj 2012 - 17:42 #21
Hvis du kan se det i browseren, kan dit program vel også. Du skal bare bruge samme URL - gør du det?
Avatar billede i-mox Nybegynder
12. maj 2012 - 19:32 #22
Mja...

Pinlig fodfejl. Det virker nu.

Tak for jeres hjælp!

Smider I begge et svar. Det må være mest rimeligt, at I deler.
Avatar billede erikjacobsen Ekspert
12. maj 2012 - 19:40 #23
Jeg samler slet ikke på point, tak.
Avatar billede arne_v Ekspert
12. maj 2012 - 19:51 #24
svar
Avatar billede i-mox Nybegynder
12. maj 2012 - 20:01 #25
Så får Arne point og I får begge tusind tak for hjælpen :-)
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

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