WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 24.05.2007, 18:30   #1
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Frage C# & ASP.Net: Funktion ausführen

S'Gott, wieder mal ein Problem. Und zwar möchte ich eine URL aufrufen können, die dann eine Funktion startet. Diese Funktion soll aber in einem neuen Thread starten, also parallel zum aufrufenden Thread. Bissl umständlich erklärt...

Also ich ruf im Browser die URL http://blabla/eineseite.aspx auf. In der führe ich eine Funktion aus. Der Browser soll aber nicht auf die Erledigung der Funktion warten, sondern die Funktion starten und fertig. Der Rest wird in der Funktion abgearbeitet.

So weit so gut. Das hab ich mal in einer dll gespeichert, die ich auf meinen Webhost kopieren will:

Code:
using System;
using System.Net;
using System.Text;
using System.Data;
using System.IO;
using System.Xml;

namespace Proxy
{
    public class Data
    {
        public string Link = @"http://www.chili-it.at";
        public string ProxyFile = @"D:\Downloads\Proxies.txt";
        public string LogFile = @"D:\Downloads\Logfile.txt";
        public string Logging = @"D:\Downloads\Logging.txt";
    }
   
    public class Program
    {
        public delegate void delegateCrawler();
     
        public void Starter()
        {
            delegateCrawler dc = new delegateCrawler(Crawler);
            AsyncCallback callback = new AsyncCallback(Finisher);
            IAsyncResult result = dc.BeginInvoke(callback, dc);
        }

        public void Finisher(IAsyncResult ar)
        {
            Data d = new Data();
           
            StreamWriter sfile = new StreamWriter(d.LogFile, true);
            sfile.WriteLine("Auftrag ausgeführt am {0}.", DateTime.Now);
            sfile.Close();
        }

        public void Crawler()
        {
            string strLine;
            Data d = new Data();
            StreamReader sr = new StreamReader(d.ProxyFile);
            StreamWriter sw = new StreamWriter(d.Logging, true);
            char[] ProxDataSep = { ':' };
            while ((strLine = sr.ReadLine()) != null)
            {
                string[] ProxData = strLine.Split(ProxDataSep);
                try
                {
                    WebRequest WebReq = WebRequest.Create(d.Link);
                    WebProxy WebProx = new WebProxy(ProxData[0], Convert.ToInt32(ProxData[1]));
                    WebReq.Proxy = WebProx;
                    WebReq.Timeout = 5000; // Timeout in ms
                    WebResponse WebResp = WebReq.GetResponse();
                }
                catch (Exception e)
                {
                    sw.WriteLine(string.Concat(strLine, "\t", e.Message, "\t", DateTime.Now));
                    continue;
                }
                sw.WriteLine(string.Concat(strLine, "\tAnfrage erfolgreich\t", DateTime.Now));
            }
            sr.Close();
            sw.Close();
        }
    }
}
Was ich machen will, ist eine Liste von Proxyservern, die in einer Textdatei gespeichert sind, abklappern und eine Info zu speichern. z.B. ob der Server nicht erreichbar ist, ob die Anfrage ok war, usw usf. Die Proxys sind im Format Host:Port gespeichert (1 Proxy pro Zeile)

Mit folgendem Code rufe ich die Funktionen auf:
Code:
<%@ Page Language="C#" Async="true" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    Auftrag ausgeführt.
    </div>
    </form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Proxy;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Proxy.Program pp = new Proxy.Program();
        pp.Starter();
        //pp.Crawler();
    }
}
Wenn ich das lokal ausführe, dann führt er die Funktion Crawler aus und legt die Logfiles auch richtig an. Wenn ich das ganze auf meinem Webhoster kopiere, dann führt er nix aus und legt auch keine Logs an. Schreibrechte hab ich in dem Ordner, die Pfade zu den Dateien stimmen ebenfalls.

Hat jemand eine Ahnung an was das liegen kann? Scheiterts vielleicht
an irgendwelchen Berechtigungen fürs Framework? Ich kenn mich gar ned aus
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:01 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag