asp.net项目全局配置文件笔记小记

#asp.net项目全局配置文件笔记小记
这些天开始准备上手一个ASP项目,由于以前没有接触过,所以在这里记录一下学习的过程:


- **前言**
- **1、项目下载**
- **2、项目编译**
- **3、项目运行**
- **4、web.config配置文件解析学习**
- **5、学习总结与感想**


-------------------


## 前言


由于本人从大二开始就一直入的是Java的坑,而且由于学校上课的c#、net内容也没有怎么听过,在开始接触net项目之后就开始了实力懵逼,从工具到语言都是一个全新的熟悉的过程,话不多说,咱们开始搭建项目并把它跑起来(这才是王道)


## 1、项目下载


以前在Java中进行编程时,使用的是eclipse工具,项目管理使用的是SVN插件工具,到了vs这里,因为vs是一个集成化的工具,所以肯定是在里面自带的,最后通过**团队资源管理器**这个工具成功将项目导入:
具体步骤如下
1、连接远程服务器
2、通过账号进行连接
3、选择本地代码保存路径
4、导入完成




## 2、项目编译


其实我一直对这个编译的过程有一个模糊的概念,像大概的过程我是知道的,比如在Java中,先是编译成class文件,再在运行的过程中翻译成本机对应的二进制文件,其实像vs的过程是一样的,都是通过词法分析、语法分析、链接文件等操作、最后在启动运行时统一编译成为二进制文件,最后执行程序:
具体步骤如下
1、连接远程服务器
2、通过账号进行连接
3、选择本地代码保存路径
4、导入完成




## 3、项目运行


项目运行这里涉及到一个选择启动项的问题,对比分析在Java中是通过部署到Tomcat中进行项目的发布与浏览,但是像在vs中设置启动项之后就可以选择F5或者Ctrl+F5运行项目(这里涉及到调试运行(F5)和直接启动运行(Ctrl+F5)),然后浏览器就会自动弹出就可以了




## 4、web.config配置文件解析学习


通过前面三步,我们已经将项目成功部署到本地并且能够访问了,现在开始我们应该分析项目的结构和文件逻辑(其实这两个说的就是一码事),如果前面对MVC比较熟悉的话基本上项目中的文件结构不会感觉到太大的困难
- **Model ---> 模型层**
- **View ---> 视图层**
- **Controller ---> 控制器层**
项目中文件较多,但是关键的文件就那么几个,除了上面说的三层模型,再来说说项目的全局配置文件Web.config,我們一般用web.config設置特定的验证方法、调试的类型、默认开发的语言、自定义错误页面以及数据库连接以及自己给定的一些字符串。
    1.与所有的XML文档一样,web.config是严格区分大小写的。每个设置使用驼峰命名法,第一个字母小写。
    2.配置节点是asp.net配置文件的核心,其中的元素都是配置ASP.NET功能的,多数应用程序还会使用等各种配置细节
    3.ASP.NET的HTTP请求处理方法
当客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,asp.Net framework就会通过HttpRuntime来处理这个Http请求,处理完毕后将结果返回给客户端。
------------------------------------
当一个http请求被送入到HttpRuntime之后,这个Http请求会继续被送入到一个被称之为HttpApplication Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的http请求,而后这个Http请求会依次进入到如下几个容器中:
HttpModule --> HttpHandler Factory --> HttpHandler
当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了,客户端也就得到相应的东东了。
完整的http请求在asp.net framework中的处理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
如果想在中途截获一个httpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。
----------------------------------------
-------------------------------------
系统本身的HttpModule实现一个IHttpModule的接口,当然我们自己的类也能够实现IHttpModule接口,这就可以替代系统的HttpModule对象了。
ASP.NET系统中默认的HttpModule:
DefaultAuthenticationModule 确保上下文中存在 Authentication 对象。无法继承此类。 
FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限。无法继承此类。 
FormsAuthenticationModule 启用 ASP.NET 应用程序以使用 Forms 身份验证。无法继承此类。 
PassportAuthenticationModule 提供环绕 PassportAuthentication 服务的包装。无法继承此类。 
SessionStateModule   为应用程序提供会话状态服务。 
UrlAuthorizationModule   提供基于 URL 的授权服务以允许或拒绝对指定资源的访问。无法继承此类。 
WindowsAuthenticationModule 启用 ASP.NET 应用程序以使用 Windows/IIS 身份验证。无法继承此类
--------------------------------------
这些系统默认的HttpModule是在文件machine.config中配置的,和我们开发时使用到的web.config的关系是:是在ASP.NET FRAMEWORK启动处理一个Http Request的时候,它会依次加载machine.config和请求页面所在目录的web.config文件,如果在machine中配置了一个自己的HttpModule,你仍然可以在所在页面的web.config文件中remove掉这个映射关系。原文引用自 http://blog.csdn.net/u010586842/article/details/16823787




## 5、学习总结与感想


经过这段时间的学习,虽然还是没有开始上手项目,但是对于ASP.net还是有了一定的了解和掌握,发现自己不懂得地方还有很多,希望自己在以后的工作学习当中继续努力,如发现文章有问题,请及时与我反应,我也及时修改,如果引用文章的作者对于引用的段落有意见,也请及时与我联系修正

你可能感兴趣的:(net开发)