搭建系统框架发现的三个Web.Config问题

web|问题

--------------------------------<特别声明,此文档是转载,黄勇BLOG的文章>-----------------------------------
搭建系统框架发现的三个Web.Config问题

按照微软的Duwamish7搭建一个Web系统框架,虽然说是一个现成的框架在旁边,却还是遇到一些烦人的小问题,其中有好几个就是这个Web.Config搞的鬼!
1。搭建好的系统框架运行出错,报什么不能正确读取ApplicationConfiguration配置节,但我的配置节部份完全是从Duwamish7中Copy过来,而且昨天还好好的啊?也不记得弄了多久,试了多少次自己也都觉得不可能的方法,都无功而返。最后,看着它发呆,一筹莫展时,一个念头闪过:ApplicationConfiguration?是不是太多了。改成AppCofiguration,再试,天啊!竟然成功了!晕!
<configSections>
<section name="AppConfiguration" type="AVWeb.SystemFramework.ApplicationConfiguration, AVWeb.SystemFramework" />
</< SPAN>configSections>
2。也是运行报Web.Config某注释行出错,注释如下:
-- Database type 0--Access 1--SqlServer -->
因为对这个不太熟悉,也是弄了很久才知道:<!-- -->中包含的注释不能包含有"--"字符
3.想在页面上调用Javascript写的一个日历控件,其中有中文注释,把js文件包括在页面中,但一运行,怎么也不能正常装载,老是报“未结束的字符串常量”等错误,弄了半天之后,才明白是字符集搞的鬼!
Web.Config文件中配置的字符集非常重要,也就是这个:<globalization responseEncoding="gb2312" requestEncoding="gb2312" />
如果程序中有中文,但Encoding又不是gb2312的话,可能很多莫名其妙的问题就来了!
Duwamish7学习笔记(二)
SystemFrameWork项目
  SystemFrameWork项目是一个能直接移植到别的应该程序的项目,可以不修改或很少的修改代码而直接使用。
  项目主要为3个类。
1.ApplicationConfiguration类
此类为应用级的配置类,实现IConfigurationSectionHandler接口。与前面讲的DuwamishConfiguration类实现方法类同。主要方法为Create(),OnApplicationStart(),ReadSetting()。
如果要使用此类,需于Global.asax的Application_OnStart事件中调用 ApplicationConfiguration.OnApplicationStart(Context);
public static void OnApplicationStart(String myAppPath)
{
appRoot = myAppPath;
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("DuwamishConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("SourceViewer");
}
此方法通用调用ConfigurationSettingis.GetConfig()方法通过Web.Config中的取得对应的解析类,调用相应的Create()方法。如果没有对应的配置解析类则可直接调用System.Configuration.NameValueSectionHandler类解析,GetConfig("SourceViewer")即是如此。
2.ApplicationAssert类
此类主要用来帮忙开发人员进行错误检查,日志记录等。主要有Check(),CheckCondition(),GenerateStackTrace()三方法和LineNumber属性。
[ConditionalAttribute("DEBUG")]应用于Check(),和GenerateStackTrace()方法,如果Debug常量被定义,此方法可以被调用。
3.ApplicationLog类
此类主要用来进行日志记录。
定义Error(1)、Warning(2)、Info(3)、Verbose(4)四个TraceLevel级别记录日志调试和跟踪信息.具体设置于Web.Config的配置节中定义。此类中所有方法均为static方法,是主要的为static void WriteLog(level,messageText)
如果写入的TraceLevel不大于配置中定义的级别,则把对应的调试、跟踪信息按定义的级别写入Windows 事件日志中和定义的跟踪文件中.
ApplicationLog类的构造函数声明为private static,在对ApplicationLog类进行第一次调用时从配置文件中取得配置信息进行初始化。

疑问:
1.在 static ApplicationLog()中运用了System.Threading.Monitor,保证多线程操作的安全性。为什么对ApplicationLog要进行锁的控制?
2.对System.Diagnostics命名空间中某些类理解不太清楚。
MSDN帮助:
1.Monitor 类
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemthreadingmonitorclasstopic.htm
2.System.Diagnostics 命名空间(提供特定的类,使您能够与系统进程、事件日志和性能计数器进行交互)
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnostics.htm
posted on Friday, December 17, 2004 11:27 AM
Duwamish7学习笔记(三)
DataAccess项目
DataAccess项目中共4个类:Books类,Categories类,Customers类,Orders类.均实现了IDisposable接口。用来关闭活动的数据库连接。
这是MS提倡的一种释放非托管资源的Dispose模式。有关Dispose模式《.NET框架程序设计(修订本)》的19章“自动内存管理(垃圾收集)”有精采的论述.
  类中通过调用存储过程,封装了对4个业务对象的Select,Insert,Update操作。
  Select操作通过SqlDataAdapter的Fill方法填充对应的继承自DataSet的业务实体类,返回给调用者。Books类和Categories类只有Select操作.
 Insert和Update操作通过一个private 函数返回InsertCommand或UpdateCommand对象。再于对外的的Public函数调用Private内部函数完成相应操作。Customers类中实现Insert,Update,Select操作,Orders类只有Insert操作。
在Customers类的LoadCustomerByEmail()方法中有对ApplicationAssert类的CheckCondition()方法调用
ApplicationAssert.CheckCondition(data.Tables[CustomerData.CUSTOMERS_TABLE].Rows.Count <= 1, "Integrity Failure: non-unique e-mail address", ApplicationAssert.LineNumber);
疑问:
1.数据访问层感觉实现了业务逻辑层的内容,平时如LoadCustomerByEmail()等方法都是写在业务逻辑层的。
2.是否有必要抽象出一个完全对数据库操作的基类,实现对数据库底层的操作?而不是在每个类如:Books,Customers中均一次次重写如SqlCommand对象,Dispose模式?
Duwamish7学习笔记(四)
BusinessRules项目
1.Customer类
长见识了!在《Duwamish7学习笔记(三)》中还在想业务逻辑层写些什么东西。
校验,还是校验!每一行,每一列,包括类型和长度,想想自已在项目的校验,真的有点汗颜!
//----------------------------------------------------------------
// Function Validate:
// Validates and customer
// Returns:
// true if validation is successful
// false if invalid fields exist
// Parameters:
// [in] customerRow: CustomerData to be validated
// [out] customerRow: Returns customer data. If there are fields
//

时间: 2024-10-26 10:20:10

搭建系统框架发现的三个Web.Config问题的相关文章

IIS7.5使用web.config设置伪静态的二种方法_win服务器

近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两种方法各有优势:第一种比较灵活,只要把文件拷到根目录下,即可直接显示所有伪静态页面(适用于此伪静态规则的所有项目,如ThinkPHP),无需更改代码:第二种适合有子目录时的伪静态,比如一个网站下有多个子网站且都要使用伪静态,那么就考虑使用第二种方法了,第一种会报错误.两种方法,自己根据情况使用吧(当然,并不是适用所有项目,可以根据项目的伪静态规则自行调整).以下是代码: 第一种方法:we

asp.net Web.Config保存设置导致网站不定时重启的问题

前几天写了篇ASP.NET读写Web.Config,之后我确实用了文中的方法,重写了我网站的配置模块.结果上线之后,却发现网站时不时地重启,非常诡异. 研究之后,我发现只要是对Web.Config做修改,就会使IIS重启网站,它不是立即重启的,似乎和GC一样有个阀值.然而我的设置必须保存在Web.Config中,这可肿么办?经过一番Google,终于找到了解决方案,现在似乎已经修复网站重启的问题了. 方法是,把Web.Config的appSettings节点里的配置信息写到另一个文件中,然后设置

IIS7.5使用web.config设置伪静态的二种方法(转)

近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两种方法各有优势:第一种比较灵活,只要把文件拷到根目录下,即可直接显示所有伪静态页面(适用于此伪静态规则的所有项目,如ThinkPHP),无需更改代码:第二种适合有子目录时的伪静态,比如一个网站下有多个子网站且都要使用伪静态,那么就考虑使用第二种方法了,第一种会报错误.两种方法,自己根据情况使用吧(当然,并不是适用所有项目,可以根据项目的伪静态规则自行调整).以下是代码: 第一种方法:we

ABP架构学习系列三:手工搭建ABP框架

由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC.AOP.ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么多时间让人去慢慢研究.很久之前想手动搭建这个框架了,但是各种理由,你懂的.但是要在技术上得到大的提升就得静的下心去研究,学到大神的思想和精髓,运用到实际中去,才能去体验更开阔的天地. 本文以创建博客为思路,一步步构建整个项目,在摸索中进步,也希望能够帮助到有需要的人. 一.基础架构 第一部分主要是搭建好整个项目的

《精通 ASP.NET MVC 3 框架(第三版)》---- 1.2 当今的Web开发

1.2 当今的Web开发 精通 ASP.NET MVC 3 框架(第三版) 除微软之外,自Web Form首次发布以来,Web开发技术发展迅速,这表现在几个不同的方向.除了已经提及的AJAX之外,还有一些其他的主要发展. 1.2.1 Web标准与REST 近些年来,向Web标准兼容的趋势已在增强.Web网站建立在比以往更广泛的设备和浏览器之上,Web标准(HTML.CSS.JavaScript等)使人们有望能够在任何地方--甚至在可联网的冰箱上--都可以有相当好的浏览体验.现代Web平台不可忽视

三种Web开发主流技术的性价评价_服务器

  ASP:MS IIS 4/Visuale Interdev 6   PHP:Apache 1.2.x/HomeSite 4.5/PHP 4   Java:iPlanet Web Server 4.1/JBuilder 3.5/JDK 1.2.2   以上技术本人却实使用过,而且已经使用它们做过项目,基于以前的工作经验给初学者和正在对自己应用系统进行选择的同仁谈谈自己对它们的评价,以做参考,同时也请大家提出自己的想法和意见 ,多交流.但是我有一个这样的看法:"一个产品它存在就有存在的理由,它不

《精通 ASP.NET MVC 3 框架(第三版)》----1.4 谁该使用ASP.NET MVC

1.4 谁该使用ASP.NET MVC 精通 ASP.NET MVC 3 框架(第三版) 如同任何新技术一样,因为其存在就必须使用它,这并不是一个充分的理由.在以下小节中,我们将给出MVC框架与大多数流行的替代品比较所得到的我们的观点.作为编写一本关于MVC框架书籍的人,我们两人尽可能做到没有偏见,但我们知道,这受限于我们的客观情况.以下小节是基于技术的比较.当选择一个Web应用程序框架时,也应当考虑:在技术层面上,团队的技能.移植现有项目所涉及的工作.开发者的关系以及信心等方面的因素. 1.4

SSH搭建的框架,刷新页面时报500错误

问题描述 用SSH搭建了web工程的框架,在没编写web.xml文件时,页面能正常显示,后来涉及到业务处理需要配置web.xml,但是配置好后刷新页面就报500错误.以下是MyEclipse控制台报的错误:这是我的项目架构,目前尚在写注册功能:hibernate配置文件及web.xml网上查了下,发现那个错误的原因是使用了Hibernate4的缘故,但是我配置的明明是hibernate3,而且配置文件显示也是hibernate3.一直卡在这个问题上不知道怎么解决 解决方案 解决方案二:浏览器报的

《精通 ASP.NET MVC 3 框架(第三版)》---- 1.3 ASP.NET MVC的主要优势

1.3 ASP.NET MVC的主要优势 精通 ASP.NET MVC 3 框架(第三版)ASP.NET已经获得了巨大的商业成功,但正如所讨论的,其他Web开发领域也在进步,即使是微软也在不断清理Web Form的垢病,因为其基本设计看上去已经相当陈旧了. 2007年10月,在得克萨斯-奥斯汀举行的第一次ALT.NET国际会议上,微软副总裁Scott.Guthrie宣布并演示了崭新的MVC Web开发平台分支,它建立在核心的ASP.NET平台之上,明确地作出对Rails等技术的进展的直接回应,以