Dieter72: C# - verzweifelte Gehversuche ohne Erfolg

Beitrag lesen

Hallo,

bei dem nachfolgendem Code würde ich euch gerne um eure Hilfe bitten, da ich nicht sehe, warum selbiger nicht funktioniert.
Zuerst noch meine Entschuldigung das ich hier den ganzen Code poste, aber anders geht's ja leider nicht...

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Net;  
using System.IO;  
using System.Text.RegularExpressions;  
  
namespace TLDSpider  
{  
    class Program  
    {  
		static bool pruefTx(string tmp)  
        {  
            string pat = "0123456789abcedfghijklmnopqrstuvwxyz, @-_;&.";  
            foreach (char ch in tmp)  
            {  
                if (pat.IndexOf (ch) < 0)  
                    return false;  
            }  
            return true;  
        }  
		static void loadWF()  
		{  
// Mit den nachfolgenden Zeilen an die Adresse (URL) ein Webrequest gesendet und die Antwort ist eine Liste mit Domainnamen die das Script abarbeiten soll.  
// Dieses funktioniert auch ohne Probleme.  
  
			string url = "http://www.script1.de";  
			HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);  
			HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
			StreamReader sr = new StreamReader(response.GetResponseStream());  
			string workFile = sr.ReadToEnd();  
			sr.Close();  
			response.Close();  
			string[] sepTest = new string[] { "#" };  
			string[] komString = workFile.Split(sepTest, StringSplitOptions.None);  
			string stattest = komString[0];  
			string workTLD = komString[1];  
			if(stattest=="OK") {  
				string[] sepStrTLD = new string[] { "\r\n" };  
				string ezWURL = "";  
				string wURL = "";  
				string postDAT = "";  
				string[] ezWURLS = workTLD.Split(sepStrTLD, StringSplitOptions.None);  
  
// Aus der über das obige Request geholte Liste werden die einzelnen URLs geholt - auch dieses funktioniert.  
  
				foreach (string element in ezWURLS)  
				{  
					ezWURL = element.Trim();  
					wURL = "";  
  
// Hier an dieser Stelle soll dann die einzelne URL an die Methode "checkURL" übergeben werden - ich denke das es hier zum Absturz kommt.  
  
					if(ezWURL!="") wURL = checkURL(ezWURL);  
  
// Nach der Abarbeitung der Methode "cehckURL" soll deren Ergebnis per Request/POST wieder an eine Webseite gesendet werden. Ob diese Funktion arbeitet oder nicht weiss ich nicht, da sich das Programm vorher verabschiedet.  
  
					if(postDAT!="") postDAT = postDAT + "~";  
					postDAT = postDAT+wURL;  
				}  
				string postData = "dat="+postDAT;  
				ASCIIEncoding encoding = new ASCIIEncoding();  
				byte[] baASCIIPostData = encoding.GetBytes(postData);  
				HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://www.site2.de");  
				HttpWReq.Method = "POST";  
				HttpWReq.Accept = "text/plain";  
				HttpWReq.ContentType = "application/x-www-form-urlencoded";  
				HttpWReq.ContentLength = baASCIIPostData.Length;  
				Stream streamReq = HttpWReq.GetRequestStream();  
				streamReq.Write(baASCIIPostData,0, baASCIIPostData.Length);  
			        HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();  
				Stream streamResponse = HttpWResp.GetResponseStream();  
				StreamReader antwo = new StreamReader(streamResponse);  
				string ressend = antwo.ReadToEnd();  
				Console.WriteLine(ressend);  
				Console.WriteLine(postData);  
			} else {  
				Console.WriteLine("Response Error");  
			}  
		}  
		  
		static string checkURL(string rurl)  
		{  
// Diese Methode macht mehrere Funktionen und auch Requests mit der übergebenen URL. An sich funktioniert diese, soll heissen das ich diesen Code bereits im EInsatz habe.  
// In Verbindung mit dem Code hier, stürzt das Programm aber mit einem Exeption-Error ab (unbehandelte Ausnahme/System.Uri.Format)			  
						try  
						{  
							List<string> nURLList = new List<string>();  
							nURLList.Add("w3.org");  
							nURLList.Add("google.com");  
							nURLList.Add("facebook.com");  
							nURLList.Add("google-analytics.com");  
							nURLList.Add("youtube.com");  
							nURLList.Add("googletagmanager.com");  
							nURLList.Add("googleadservices.com");  
							nURLList.Add("google.de");  
							nURLList.Add("blogger.com");  
							Console.Clear();  
							Console.Write(rurl);  
							string url = "http://www." + rurl;  
							string surl = "https://www." + rurl;  
							WebRequest.DefaultWebProxy = null;  
							HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);  
							HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
							StreamReader sr = new StreamReader(response.GetResponseStream());  
							string html = sr.ReadToEnd();  
							sr.Close();  
							response.Close();  
							string wrDomain = rurl+"#";  
							string wrIPAdr = "";  
							string wrKeys = "";  
							string wrADS = "";  
							string wrANA = "";  
							string wrNURL = "";  
							try  
							{  
								// Check IP  
								IPAddress[] addresslist = Dns.GetHostAddresses(rurl);  
								string ipadr = addresslist[0].ToString();  
								if (ipadr != "") {  
									wrIPAdr = ipadr + "#";  
								} else {  
									wrIPAdr = "0#";  
								}  
								// Check Keywords  
								Match match0 = Regex.Match(html, @"name=.keywords.*content=.*>", RegexOptions.IgnoreCase);  
								if (match0.Success)  
								{  
									string isKeywords = match0.Groups[0].Value;  
									string[] sepStr = new string[] { "content=\"" };  
									string[] ezStrs = isKeywords.Split(sepStr, StringSplitOptions.None);  
									string kwords = ezStrs[1];  
									sepStr = new string[] { "\"" };  
									ezStrs = kwords.Split(sepStr, StringSplitOptions.None);  
									kwords = ezStrs[0];  
									kwords = kwords.Trim();  
									kwords = kwords.ToLower();  
									sepStr = new string[] { "," };  
									string[] ezKeys = kwords.Split(sepStr, StringSplitOptions.None);  
									kwords = "";  
									foreach (string element in ezKeys)  
									{  
										if(kwords!="") kwords = kwords+",";  
										kwords = kwords+element.Trim();  
									}  
									if(Program.pruefTx(kwords)==true) {  
										wrKeys = kwords + "#";  
									} else {  
										wrKeys = "0#";  
									}  
								} else {  
									wrKeys = "0#";  
								}  
								// Check Adsense  
								Match match1 = Regex.Match(html, @"pub\-[0-9]*", RegexOptions.IgnoreCase);  
								if (match1.Success)  
								{  
									string isAdsense = match1.Groups[0].Value;  
									wrADS = isAdsense + "#";  
								} else {  
									wrADS = "0#";  
								}  
								// Check Analytics  
								Match match2 = Regex.Match(html, @"ua\-[0-9]*\-[0-9]*", RegexOptions.IgnoreCase);  
								if (match2.Success)  
								{  
									string isAnalytics = match2.Groups[0].Value;  
									wrANA = isAnalytics+"#";  
								} else {  
									wrANA = "0#";  
								}  
								// Check new URLs  
								MatchCollection nURL = Regex.Matches(html, @"https?://www\.?[a-zA-Z0-9\-\.]+\.(com|org|net|biz|info|de|us|COM|ORG|NET|BIZ|INFO|DE|US)");  
								string sigURL = "";  
								for (int i = 0; i < nURL.Count;i++ )  
								{  
									sigURL = "";  
									if(nURL[i].Groups[0].Value!=url && nURL[i].Groups[0].Value!=surl && nURL[i].Groups[0].Value!="") {  
										sigURL = nURL[i].Groups[0].Value;  
										sigURL = sigURL.ToLower();  
										sigURL = sigURL.Replace("http://www.", "");  
										sigURL = sigURL.Replace("https://www.", "");  
										int iSuchIndex = 1;  
										iSuchIndex = nURLList.IndexOf(sigURL);  
										if(iSuchIndex<0) {  
											nURLList.Add(sigURL);  
											if(wrNURL!="") wrNURL = wrNURL+"+";  
											wrNURL = wrNURL+sigURL;  
										}	  
									}  
								}  
							}  
							catch (Exception)  
							{  
								wrIPAdr = "ERR-DNSEXC";  
							}  
							string retUWert = wrDomain+wrIPAdr+wrKeys+wrADS+wrANA+wrNURL;	  
							return retUWert;  
						}  
						catch (WebException)  
						{  
							string retUWert = rurl+"#ERR-NOCON";  
							return retUWert;  
						}  
						  
		}  
		  
		  
        static void Main(string[] args)  
        {  
			Program.loadWF();  
		}  
    }  
}

So, wie schon in dem Comments im Code geschrieben, läuft das Teil nicht sondern verabschiedet sich mit einem Absturz (unbehandelte Ausnahme).
Allerdings verstehe ich nicht warum das so ist.
Ferner dachte ich, das die URLS in der Schleife nacheinander, soll heissen: einzelene URL ermittelt und an Methode übergeben und dann nach Abarbeitung dieser erst die zweite usw...
Wenn ich mir das aber in der Console ausgeben lasse, sieht das eher so aus als ob die Methodenaufrufe hinterher kommen.

Ich hoffe daher mal auf eure Mithilfe - ach ja, wie unschwer zu erkennen sein sollte bin ich Anfänger im Bereich C# - daher geht bitte nicht allzu hart mit mir ins Gericht...

Gruss
Dieter