如何为ASP.Net(没有Webforms或MVC)创建一个基本的HttpApplication

如何为ASP.Net(没有Webforms或MVC)创建一个基本的HttpApplication,asp.net,web-config,global-asax,httpapplication,Asp.net,Web Config,Global Asax,Httpapplication,好的,我想了解更多关于ASP.Net如何在引擎盖下工作的信息。我的意思是在MVC或Webforms和其他类似的框架之下 基本上,我想知道这些框架是如何连接到ASP.Net的,以便它们与IIS一起工作。创建一个简单的HttpApplication,它与IIS一起工作,并且既不使用MVC也不使用Webforms,最起码的要求是什么?Web.config中的最低要求是什么?将向Global.asax添加什么?编写一个继承自IHttpHandler的类。接口定义为: public interface I

好的,我想了解更多关于ASP.Net如何在引擎盖下工作的信息。我的意思是在MVC或Webforms和其他类似的框架之下


基本上,我想知道这些框架是如何连接到ASP.Net的,以便它们与IIS一起工作。创建一个简单的HttpApplication,它与IIS一起工作,并且既不使用MVC也不使用Webforms,最起码的要求是什么?Web.config中的最低要求是什么?将向Global.asax添加什么?

编写一个继承自
IHttpHandler
的类。接口定义为:

public interface IHttpHandler
{
    void ProcessRequest(HttpContext context);
    bool IsReusable { get; }
}
HttpContext
是执行应用程序所需的全部内容。它充当交互中涉及的所有事物的门面。
Server
属性提供有关服务器的信息。
Request
属性提供了有关HttpRequest的信息,而
Response
属性提供了向客户端呈现输出的方法

我的建议是在HttpContext上使用Reflector,了解它包含的内容以及每个组件的工作方式

下面是一个基本的应用程序示例:

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
不必包含任何内容。使用从
IHttpModule
派生的类处理全局事件可能是更好的做法

web.config的处理方式必须有所不同,这取决于您是在使用IIS 7还是其他内容。无论哪种方式,都有一个HttpHandler部分,您必须在其中注册自定义处理程序来处理所有请求

您可以将web.config设置得非常小,但是包含的配置部分的数量取决于您想要的功能。此外,web.config处理的一些事情可以直接通过IIS进行管理。查看更多关于此的信息


我希望这有帮助。如果你能更具体地说明你在寻找什么,我们可以给你提供更好的信息。

我本来打算自己回答这个问题,因为我已经回答了。smartcaveman提供了部分解决方案

对于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>
然后,您可以使用ASP.Net处理程序来处理内容(如图所示),当然,您也可以自己编写替换程序,自己编写响应程序


作为参考,我用自定义路由引擎(和视图引擎)创建的工作框架位于

中,我建议您使用它来查找。@John问题是有太多东西需要查看。我的意思是只要计算一下标准web.config中有多少程序集引用
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();
}