在上一篇<学习MVC之租房网站(一)-项目概况>中,确定了UI+Service的“双层”架构,并据此建立了项目

接下来要编写Common类库、配置AdminWeb和FrontWeb

一、编写Common类库

验证码和计算MD5没什么好说,直接从网上复制来的~.~

以后会逐步扩充,把公用的方法都放到这儿

二、配置AdminWeb和FrontWeb

1. EF和连接字符串

a. EF直接从NuGet安装,EF默认与SqlServer对接,便不需要做额外的配置了

b. 连接字符串:

<addname="connStr" connectionString="Data Source=.; InitialCatalog=ZSZ; User ID=sa; Password=***;"providerName="System.Data.SqlClient" />

2. Log4Net

a. 从NuGet安装 Log4Net,两个WebApplication项目和Service项目都要安装

b. 然后是配置Web.Config,在<configuration>节点下新增log4net配置节点,内容是网上复制来的:

<log4net>

……

<paramname="File" value="App_Data/Log/" />

……

<paramname="MaximumFileSize" value="1MB" />

……

</log4net>

之后生成的日志就会保存到App_Data文件夹,并且每个日志文件最大为1M。

另外,检查下<configSections>节点下是否有<sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>。log4net有时不会自动添加这个设置,需要手动给加上。

c. 设置Global.asax,在Application_Start中,设置log4net.Config.XmlConfigurator.Configure();

d. 在Application_Start中注册log4net后,就可以自动记录未捕获异常了,级别为ERROR。但在有些地方需要记录DEBUG级别日志时,要手写代码,比如要在DBContext中记录查询SQL:

这儿的DebugFormat挺好用的。

3. 进程外Session

虽然对这个小项目来说,进程内Session完全够用,但用个进程外Session尝鲜有何不可,反正是俺自己做主,哈哈~~

对于单一服务器,进程外Session的作用有两点:1)防止服务器因各种原因重启造成Session丢失,一旦Session丢失,用户在浏览器的登录状态就会失效,因为Cookie中SessionId指向的Session找不到了;2)当网站访问量很大时,内存中存储进程内Session的区域可能会被撑爆,这也会导致服务器重启,Session丢失。

而对于服务器集群,除了前面的两点,为了实现Session在各台服务器的共享,就必须使用进程外Session。

进程外Session的实现主要有数据库和状态服务器两种,在存取速度方面,从快到慢依次为 进程内Session、状态服务器Session、数据库Session;数据库Session要从磁盘的表中存取,当然比不上内存的速度,但好处是容量很大,不用担心被撑爆。

本次项目将使用数据库Session

a. 执行aspnet_regsql

我的是32位机器,aspnet_regsql的位置在C:\Windows\Microsoft.NET\Framework\v4.0.30319

运行后,会增加这样的两张表

b. 配置Web.Config

System.web节点下添加

<!--数据库Session配置文件-->

<sessionStatesqlConnectionString="server=.;database=ZSZ;uid=sa;pwd=***"allowCustomSqlDatabase="true" mode="SQLServer"timeout="1000"></sessionState>

Session有效期默认为20分,这儿设置为1000分钟。

启动网站,试着写入一条Session,ASPStateTempSessions表会增加一条记录

结束

项目框架搭建好,配置好了EF、Log4Net和进程外Session,接下来就正式开始数据库创建、Service层和DTO的编写了

博客园:http://www.cnblogs.com/zhixin9001/

CSDN:http://blog.csdn.net/zhixin9001

学习MVC之租房网站(二)-框架搭建及准备工作的更多相关文章

  1. 学习MVC之租房网站(十二)-缓存和静态页面

    在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用.发邮件,并将通过UEditor上传的图片保存到云存储.在项目的最后,再学习优化网站性能的一些技术:缓存和 ...

  2. 学习MVC之租房网站(三)-编写实体类并创建数据库

    在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式 ...

  3. 学习MVC之租房网站(四)-实现Service层并进行单元测试

    在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且 ...

  4. 学习MVC之租房网站(五)-权限、角色、用户管理

    在上一篇<学习MVC之租房网站(四)-实现Service层并进行单元测试>中,记录了实现Service层并进行单元测试的过程,接下来该到"正题"-MVC了,也就是UI层 ...

  5. 学习MVC之租房网站(六)-用户登录和权限控制

    在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...

  6. 学习MVC之租房网站(七)-房源管理和配图上传

    在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 ...

  7. 学习MVC之租房网站(八)- 前台注册和登录

    在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增.编辑房源信息以及上传房源配图的功能.到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录.注册开始. ...

  8. 学习MVC之租房网站(九)-房源显示和搜索

    在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...

  9. 学习MVC之租房网站(十)-预约和跟单

    在上一篇<学习MVC之租房网站(九)-房源显示和搜索>完成了房源的显示.检索,然后是用户的预约看房,以及后台操作员对预约看房的跟单操作. 预约看房仅有将预约信息保存到对应表的操作,预约表有 ...

随机推荐

  1. 使用jQuery操作DOM

    一.DOM操作分为3类 1.DOM Core DOM Core不是Javascript的专属品,任何一种支持DOM的编程语言都可以使用它.它的用途不仅限于处理一种使用标记语言编写出来的文档 2.HTM ...

  2. 读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用

    一个关于赋值的有趣的事情是你可以将它们链在一起: int x, y, z; x = y = z = ; // chain of assignments 同样有趣的是赋值采用右结合律,所以上面的赋值链被 ...

  3. php和js中,utf-8编码转成base64编码

    1.php下转化base64编码 php中,文本文件的编码决定了程序变量的编码,比如以下代码在不同编码的php文件中,展示的效果也是不一样的 <?php $word = '严'; echo ba ...

  4. 关于ASP.NET Web Api的HelpPage文档注释问题

    关于ASP.NET Web Api的HelpPage文档注释问题 以前我用微软的HelpPage来自动生成的webAPI帮助文档.在使用了一段时间后发现只能显示Controller上面写的注释文档内容 ...

  5. 用VUEJS做一个猫眼电影web app

    之前一直在学习原生js,可是发现原生js虽然很好,但是想实现一个稍微复杂一点的项目都很麻烦.直到遇见了vue.js,发现vue是真的很好用,而且很简洁,利用组件化开发能够快速做出项目,所以为了学习vu ...

  6. Vue学习之路---No.1(分享心得,欢迎批评指正)

    首先为了打消大家对Vue.js存在的顾虑,先通过大家所熟知的JQ作为对比. 都知道JQ的语法相对简单.清楚.使用方便.功能齐全: 那么Vue.js呢,同样的,Vue.js与JQ在很多地方都是相同之处, ...

  7. python学习笔记(一)元组tuple

    元组由简单的对象组构成,元组与列表相似,但是元组不能在原处修改.元组位置有序的对象集合,元组通过偏移来访问. 为什么有了列表还要元组?元组的不变性提供了某种完整性,可以确保元组在程序中不被另一个引用修 ...

  8. AlloyTouch.js 源码 学习笔记及原理说明

    alloyTouch这个库其实可以做很多事的, 比较抽象, 需要我们用户好好的思考作者提供的实例属性和一些回调方法(touchStart, change, touchMove, pressMove, ...

  9. 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 682  Solved: 280[Submit][Sta ...

  10. 免费瘫软入院,付费发飙成壮汉,YoMail 想干嘛?

    大家好,我是YoMail 最近,Yo妹在思考一个非常严肃的事情. YoMail 全新升级,开启会员style!   新版叫Membership,即日就要与大家见面. 他的与众不同是推出"会员 ...