Avatar billede Slettet bruger
25. oktober 2005 - 11:31 Der er 7 kommentarer og
1 løsning

Problemer med egen webserver og webrequests

Hey

Jeg har lavet en lille webserver i C# ikke noget særligt, men med IE og Firefox virker alt som det skal.
Den køre på port 80 og skriver noget tekst tilbage til klienten.

Nu vil jeg så lave et lille program i C# som kontakter min egen webserver, her opstår der problemer.
Jeg bruger et normalt HttpWebRequest ligesom altid, og det virker også hvis jeg f.eks. tester den op mod en IIS.
Men igennem min egen webserver får jeg bare denne fejl:
--------- FEJL START ---------
Testing connection to: http://192.168.1.5:80/index.html
System.Net.WebException: The underlying connection was closed: Unable to connect to the remote server.
  at System.Net.HttpWebRequest.CheckFinalStatus()
  at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
  at System.Net.HttpWebRequest.GetResponse()
  at webtest in C:\Projects\webtest\test.cs:line 37
--------- FEJL Slut ---------

nogen som har nogen ideer.. som sagt, virker det i en normal browser..
Avatar billede arne_v Ekspert
25. oktober 2005 - 11:34 #1
Jeg tror ikke at du får sat alle headerne rigtigt.

Og WebRequest klassen er sikkert mere kritisk end browsere.

Vi skal se lidt kode for at komme videre.
Avatar billede Slettet bruger
25. oktober 2005 - 11:37 #2
det var noget af et hurtigt svar :)

----
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://192.168.1.5:80/index.html");
           
try
{
    WebResponse myResponse = myRequest.GetResponse();
    Console.Write(myResponse.ToString());
    myResponse.Close();
    return true;
}
catch(System.Net.WebException ex)
{
    Console.WriteLine(ex);
    return false;
}
Avatar billede arne_v Ekspert
25. oktober 2005 - 11:42 #3
det var din server kode - specielt den del som sender HTTP headerne jeg var mest
interesseret i
Avatar billede Slettet bruger
25. oktober 2005 - 11:48 #4
ahh.. jeg sender ingen headers, jeg konverterer blot noget tekst til en binary stream og smider det tilbage i hoved på klienten.. da det virkede i IE og andre browserer gik jeg udfra at det var en oki måde at lave det på.. så længe det naturligvis var til noget internt brug.. men har du nogle eksempler på hvad jeg skal smide tilbage til klienten?
Avatar billede arne_v Ekspert
25. oktober 2005 - 11:59 #5
heller ikke implicit ?
Avatar billede arne_v Ekspert
25. oktober 2005 - 12:00 #6
eksempel:

                TcpClient client = server.AcceptTcpClient();
                StreamReader rdr = new StreamReader(client.GetStream());
                StreamWriter wrt = new StreamWriter(client.GetStream());
                string line;
                while((line = rdr.ReadLine()) != "")
                {
                    // skip request headers
                }
                // send response headers
                wrt.WriteLine("HTTP/1.0 200 OK");
                wrt.WriteLine("Content-Length: " + SIZE);
                wrt.WriteLine("Content-Type: text/plain");
                wrt.WriteLine("Content-Disposition: attachment; filename=\"test.txt\"");
                wrt.WriteLine();
                wrt.Flush();
                // klar til at sende body
Avatar billede Slettet bruger
25. oktober 2005 - 12:15 #7
hey.. det hjalp :)
takker, opret lige et svar så du kan få dine points :)
Avatar billede arne_v Ekspert
25. oktober 2005 - 12:19 #8
kommer her
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