ASP.NET-Runtime in der eigenen Applikation aufrufen

Nachdem die ASP.NET-Runtime in die eigene Applikation eingebunden wurde, können nun Aufrufe an diese weitergeleitet werden. Dazu ist „lediglich“ ein Aufruf der Methode HttpRuntime.ProcessRequest() nötig. Damit dieser aber durchgeführt werden kann, muss eine Implementierung der abstrakten Klasse System.Web.HttpWorkerRequest her. .NET bietet mit System.Web.Hosting.SimpleWorkerRequest eine solche Basisimplementierung, die hier erst einmal ausreichen soll – einfach den Konstruktor mit den drei Parametern aufrufen und das neue Objekt übergeben:

HttpWorkerRequest workerRequest = new SimpleWorkerRequest(page, query, output);
HttpRuntime.ProcessRequest(workerRequest);

Bei dem Page-Parameter darf kein führender Slash angegeben werden, während beim Query-Parameter das führende Fragezeichen weggelassen werden muss. Für einfachste Anwendungen kann der Output-Parameter eine Instanz vom Typ System.IO.StringWriter aufnehmen.

Ein kompletter Aufruf könnte dann im „client-seitigen“ Teil der Anwendung wie folgt aussehen:

MyApplicationHost myHost = MyApplicationHost.CreateWebHost(
    "/", Path.Combine(Environment.CurrentDirectory, "SampleWebApp"));
using (StringWriter writer = new StringWriter())
{
    myHost.ProcessRequest("Default.aspx", "q=Where are you?&a=I am here!", writer);
    EmbeddedWebBrowser.DocumentText = writer.ToString();
}

EmbeddedWebBrowser stellt dabei eine Instanz des System.Windows.Forms.WebBrowser-Controls dar.