2010-07-22 3 views
5

Ok Ich möchte mehr darüber lernen, wie ASP.Net unter der Haube funktioniert. Ich meine unter MVC oder Webforms und andere solche Frameworks.So erstellen Sie eine Barebones HttpApplication für ASP.Net (ohne Webforms oder MVC)

Grundsätzlich möchte ich wissen, wie diese Frameworks auf ASP.Net verdrahtet sind, so dass sie mit IIS arbeiten. Was wäre das Minimum für die Erstellung einer einfachen HttpApplication, die mit IIS funktioniert und weder MVC noch Webforms verwendet? Was ist das Minimum um in der Web.config zu sein? Was würde Global.asax hinzugefügt werden?

+0

Ich schlage vor, Sie verwenden [Reflector] (http://www.red-gate.com/products/ reflector/index.htm) herausfinden. –

+0

@John das Problem ist, es gibt so viel zu sehen. Ich meine nur, wie viele Assembly-Referenzen in einer Standard-web.config enthalten sind – Earlz

Antwort

2

Eigentlich wollte ich diese Frage selbst beantworten, wie ich es getan habe. smartcaveman bietet einen Teil der Lösung.

What I did für web.config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <compilation debug="true"> 
     </compilation> 
    </system.web> 
    <system.codedom> 
     <compilers> 
      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
       <providerOption name="CompilerVersion" value="v3.5"/> 
       <providerOption name="WarnAsError" value="false"/> 
      </compiler> 
     </compilers> 
    </system.codedom> 
    <!-- 
    The system.webServer section is required for running ASP.NET AJAX under Internet 
    Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
    </system.webServer> 
    <runtime> 
    </runtime> 
</configuration> 

und dann in global.asax:

protected virtual void Application_BeginRequest (Object sender, EventArgs e) 
{ 
    if (Request.Url.AbsolutePath == "/test") 
    { 
     var h=new Test1(); //make our Test1.ashx handler 
     h.ProcessRequest(Context); 
    } 
    else 
    { 
     Response.ContentType = "text/plain"; 
     Response.Write("Hi world!"); 
    } 
    CompleteRequest(); 
} 

und dann können Sie ASP.Net-Handler für Inhalte verwenden (wie dargestellt) oder Sie können von Natürlich schreiben Sie Ihren eigenen Ersatz und schreiben Sie selbst an Response.

Als Referenz mein Arbeitsrahmen I mit einem benutzerdefinierten Routing-Engine (und Ansicht Motor) hergestellt ist in subversion here

6

Schreiben Sie eine Klasse, die von IHttpHandler erbt. Die Schnittstellendefinition ist:

public interface IHttpHandler 
{ 
    void ProcessRequest(HttpContext context); 
    bool IsReusable { get; } 
} 

HttpContext alles, was Sie benötigen eine Anwendung auszuführen. Es fungiert als Fassade für alles, was an der Interaktion beteiligt ist. Die Server-Eigenschaft gibt Informationen zum Server. Die Request-Eigenschaft gibt Informationen zum HttpRequest, und die Response-Eigenschaft bietet eine Möglichkeit, die Ausgabe auf dem Client zu rendern.

Mein Vorschlag ist Reflector auf HttpContext zu verwenden und ein Gefühl dafür zu bekommen, was es enthält und wie jede seiner Komponenten funktioniert.

Hier ist ein grundlegendes app Beispiel:

public class HelloWorldHandler: IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     context.Response.Write("Hello World"); 
     context.Response.End(); 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 

Global.asax nichts enthalten hat. Es ist wahrscheinlich besser, globale Ereignisse mit einer von IHttpModule abgeleiteten Klasse zu behandeln.

web.config muss je nachdem, ob Sie IIS 7 oder etwas anderes verwenden, anders gehandhabt werden. In beiden Fällen gibt es einen HttpHandler-Abschnitt, in dem Sie Ihren benutzerdefinierten Handler registrieren müssen, um alle Anfragen zu bearbeiten.

Sie können die Datei web.config sehr minimal machen, aber die Anzahl der enthaltenen Konfigurationsabschnitte hängt von den gewünschten Funktionen ab. Darüber hinaus können einige der Dinge, die von web.config behandelt werden, direkt mit IIS verwaltet werden. View http://msdn.microsoft.com/en-us/library/b5ysx397(v=VS.85).aspx für mehr dazu.

Ich hoffe, das hilft. Wir können Ihnen bessere Informationen geben, wenn Sie genauer wissen, wonach Sie suchen.

Verwandte Themen