Ear*_*rlz 5 asp.net web-config httpapplication global-asax
好的,我想了解更多有关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; }
}
Run Code Online (Sandbox Code Playgroud)
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
Global.asax不必包含任何东西.使用派生自的类来处理全局事件可能是更好的做法IHttpModule.
必须以不同的方式处理web.config,具体取决于您使用的是IIS 7还是其他.无论哪种方式,都有一个HttpHandler部分,您必须注册自定义处理程序来处理所有请求.
您可以使web.config非常小,但包含的配置部分的数量取决于您想要的功能.此外,可以使用IIS直接管理web.config处理的一些内容.有关详细信息,请查看http://msdn.microsoft.com/en-us/library/b5ysx397(v=VS.85).aspx.
我希望这有帮助.如果您对所需内容更具体,我们可以为您提供更好的信息.
我实际上是想自己回答这个问题,因为我已经这样做了。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>
Run Code Online (Sandbox Code Playgroud)
然后在 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();
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 ASP.Net 内容处理程序(如图所示),或者您当然可以编写自己的替换内容并自己写入 Response。
作为参考,我用自定义路由引擎(和视图引擎)制作的工作框架在subversion 中
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |