浅谈ASP.NET的内部机制(一)
前言:当一个Http请求发送给一个aspx页面时,服务器进行了哪些操作?又如何来解析这个请求?ASP.NET在接收请求后是怎么运行的,如怎么编译以及怎么样用托管的代码来运行的?.....理解这些问题,使我们可以更加好的开发ASP.NET。
1.当我们在浏览器中请求一个ASP.NET网站的某个页面的时候,如,我们在浏览器中输入"http://localhost/Demo.aspx",这个请求就被发送到了服务器(当然了,这个网站是部署在IIS中的)。当请求到达了服务器之后,那么IIS就开始进行一系列的操作。注意,不是每个请求都一定会由ASP.NET来运行处理的,大家稍后就会明白为什么。
2.在IIS中有一个组件:http.sys,其实这个组件的作用很简单,就是验证请求的url,如之前的"http://localhost/Demo.aspx".如果请求的URL不符合http.sys的要求,那么这个请求就不会被传递给ASP.NET的处理程序,这样就在IIS这道门槛这些阻止了不合法的url请求,这样ASP.NET就不用处理这个不合法的请求,就减轻了服务器的压力。
下面,我们就来看看这个http.sys到底是怎么样处理请求的url的,当大家明白这个问题后,就可以帮助我们解决很多的以前遇到的问题。
首先请大家看看下面的图:
图片看不清楚?请点击这里查看原图(大图)。
当发送一个请求来请求页面的时候,http.sys就会检查这个请求的url和headers的总的大小:包含检查url中有关查询字符串的大小,如demo.aspx?username=demo,也会检查cookie的大小。把这些所有的加起来,看看它们是否超过了16KB,如果超过了,请求就失败了。所以请求根本就没有传递给ASP.NET。
而且在http.sys检查url的时候也有很多的要求的。如我们之前的那个url:
http://localhost/Demo.aspx
这个url是由localhost,Demo.aspx,这些路径的片段组成的,每一个由"/"分割的字符串都是一个路径片段,本例中就有两个路径片段。在默认情况下,http.sys要求一个url的路径片段不超过255个,并且每个路径片段的大小也不要超过260个字母。但是注意,如果在Demo.aspx后面有查询字符串,"Demo.aspx?page=1",那么这个片段就可以超过260个字母的限制,即"Demo.aspx?page=1"可以更大。但是不管怎么样,这些url的大小,如之前所说的,不能超过16KB。如果没有通过http.sys的要求,IIS就发送一个404的错误。
之前也说了的,那是默认的这只,其实这些设置我们是可以在注册表中改的。但是默认设置已经很不错了,所以一般没有必要改。
相关文档:
首页:
<%@ Page Language="C#" 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 ......
//private string datapatch = ConfigurationSettings.AppSettings["acessconn"];//数据库地址
private string datapatch = "db/global.asa";//数据库地址
///
/// 取得dataset
//
/// 查询语句
///
public DataSet GetDataSet(string Commandtext)
{&nbs ......
下面要解决的问题如下:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:
&nbs ......
public class PageBase:System.Web.UI.Page
{
public PageBase()
{
//
// TODO: Add constructor logic here
//
}
protected override void InitializeCulture()
{
// ......
说到发送邮件发送,先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服 ......