文章标签 ‘ASP.NET’

[转载]五幅图演示ASP.NET编译过程 – keepfool – 博客园. No 1. 源代码 > 编译 > 本地代码 No 2. 语言编译器 No 3. 编译成MSIL No 4. MSIL的组成(中间语言和元数据) No 5. Web Application和Website的区别 简单概括一下: 语言编译器:无论是VB code还是C# code都会被Language Compiler转换为MSIL MSIL的作用:MSIL包含一些元数据和中间语言指令 JIT编译器的作用:根据系统环境将MSIL中间语言指令转换为机器码 第一次运行Website时,CLR会将MSIT通过JIT进行编译,最终转换为执行速度非常快的Native Code。这也可以解释为什么ASP.NET网站第一次运行时会较慢,而后面的执行速度则会相对快很多。 本文已经同步至我的个人博客站点:积累吧|五幅图演示ASP.NET编译过程 本文PPT下载:ASP.NET编译过程

2012年5月15日09:50 没有评论

[转载]ASP.NET Session丢失问题原因及解决方案 – kdkler – 博客园. 正常操作情况下会有ASP.NET Session丢失的情况出现。因为程序是在不停的被操作,排除Session超时的可能。另外,Session超时时间被设定成60分钟,不会这么快就超时的。 现在我就把原因和解决办法写出来。 ASP.NET Session丢失原因: 由于ASP.NET程序是默认配置,所以Web.Config文件中关于Session的设定如下: <sessionState mode=’InProc’ stateConnectionString=’tcpip=127.0.0.1:42424′ SQLConnectionString=’data source=127.0.0.1;Trusted_Connection=yes’ cookieless=’true’ timeout=’60′/> 我 们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小 写敏感) 。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不 稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。 哪些情况下该进程会重起呢?微软的一篇文章告诉了我们: 1、配置文件中processModel标签的memoryLimit属性 2、Global.asax或者Web.config文件被更改 3、Bin文件夹中的Web程序(DLL)被修改 4、杀毒软件扫描了一些.config文件。 更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications ASP.NET Session丢失解决办法: 前面说到的sessionState标签中mode属性可以有三个取值,除了InProc之外,还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的,所以当aspnet_wp.exe重起的时候,不会影响到Session。 现在请将mode设定为StateServer。StateServer是本机的一个服务,可以在系统服务里看到服务名为ASP.NET State Service的服务,默认情况是不启动的。当我们设定mode为StateServer之后,请手工将该服务启动。 这样,我们就能利用本机的StateService来存储Session了,除非电脑重启或者StateService崩掉,否则Session是不会丢的(因Session超时被丢弃是正常的)。 除 此之外,我们还可以将Session通过其他电脑的StateService来保存。具体的修改是这样的。同样还在sessionState标签 中,有个stateConnectionString=’tcpip=127.0.0.1:42424′属性,其中有个ip地址,默认为本机 (127.0.0.1),你可以将其改成你所知的运行了StateService服务的电脑IP,这样就可以实现位于不同电脑上的Asp.net程序互通 Session了。 如果你有更高的要求,需要在服务期重启时Session也不丢失,可以考虑将mode设定成SQLServer,同样需要修改SQLConnectionString属性。关于使用SQLServer保存Session的操作,请访问这里。 在使用StateServer或者SQLServer存储Session时,所有需要保存到Session的对象除了基本数据类型(默认的数据类型,如int、string等)外,都必须序列化。只需将[Serializable]标签放到要序列化的类前就可以了。 如: [Serializable] public [...]

2012年5月2日13:12 评论关闭

[转载]ASP.NET数据库连接字符串总结 – maplecumt – 博客园. 一、使用OleDbConnection对象连接OLE DB数据源1.连接Access 数据库 Access 2000: “provider=Microsoft.Jet.Oledb.3.5;Data Source=Access文件路径” Access 2003: “provider=Microsoft.Jet.Oledb.4.0;Data Source=Access文件路径” Access 2007: “provider=Microsoft.Ace.Oledb.12.0;Data Source=Access文件路径” 备注:Access数据库只提供两个连接属性provider(数据提供程序)和data source(数据源); Access2000\2003的文件格式是“。mdb”,Access2007的文件格式是“。accdb”; Access的数据提供程序版本是向下兼容的,在Win7下测试使 用Microsoft.Jet.OLEDB.3.5提示“未在本地计算机上注册“Microsoft.Jet.OLEDB.3.5”提供程序。”,改用 Microsoft.Jet.OLEDB.4.0或者Microsoft.Ace.OLEDB12.0完全可以访问Access2000的数据库文件。当 然也可以尝试使用微软提供的MDAC 来修改provider的版本。 2.连接Excel数据库 Excel 2003: “provider=Microsoft.Jet.OLEDB.4.0;Data Source=Access文件路径;extended properties=excel 8.0” Excel 2007: “provider=Microsoft.Ace.OLEDB.12.0;Data Source=Access文件路径;extended properties=excel 12.0” 备注:在代码中引用工作表时,应将表名表示为“[工作表名$]”,遇到字段为数据库保留关键字时,给该字段名加 上[]以示区别,如定义select 语句时:string connStr=”select * from [login$] where username=’abc’ and [password]=’abc123’ ”; 如果在数据表中用数字作为文本类型数据时,则应在数字前加单引号将默认的数值强行设定为文本类型。 3.连接SQL [...]

2012年4月25日13:37 评论关闭

[转载]Asp.net 页面基本对象 – 强子哥 – 博客园. 一、Response对象   1、输出信息到客户端。   2、主要有Write()和Redirect()两个方法。Write()方法:输出信息到浏览器。Redirect()方法:地址转向,将浏览器引导到新的WEB页或网站。 3、作用:使用Write()方法,动态地向浏览器输出信息。例:Response.Wrtie(“这是我的第一个网页”);Response.Write(“现在的时间是:”+DateTime.Now.ToString());   注:与C#语言中的Console.Write()相似。输出回车:Response.Write(“<br>”);   二、Request对象   1、作用:从客户端得到数据信息。常用的方法有:Form[]方法和QueryString[]方法。   2、Form[]方法:用来获取客户端以post方式提交的数据。格式:Request.Form[“数据名称”]; 3、QueryString[]方法:用来获取客户端以get方式提交的数据。格式:Request.QueryString [“数据名称”];   4、例:有网址:parm.aspx?tid=3452   则可用Request.QueryString[“tid”]来获取3452这个值   Request常用属性   1、Request.UserAgent:用来获取客户端浏览器版本。   2、Request.UserHostAddress:获取客户端ip地址。   3、Request.ApplicaionPath:获取当前网站的相对路径。   4、Request.PhysicalApplicationPath:获取当前网站的绝对路径。   三、Server对象   1、作用:访问服务器信息。   2、Server.MachineName:获取服务器名称 3、Server.HtmlEncode():将字符串进行html编码。 4、Server.Transfer();终止当前页的执行,开始执行新页。与Response.Redirect()相似。 5、Server.MapPath();返回物理路径。   返回网站及文件夹路径   Server.MapPath(“~”); Server.MapPath(“.”); Server.MapPath(“ ”); Server.MapPath(“~/image/”);   四、Application对象   [...]

2012年4月1日08:42 评论关闭

[转载]充分利用缓存来提高网站性能 – 阿福 – 博客园. [原文作者]:Omar [原文链接]:Making best use of cache for high performance website 使用URLs时要确保一致性 浏览器基于URL来缓存资源。当URL改变后,浏览器从源服务器获该资源的新的版 本。查询字符串参数的改变也被视为URL的改变。例如,”/default.aspx” 被缓存到浏览器,如果你请求了”/default.aspx?123″,浏览器将从服务器获取新的版本。对于这个新URL的响应,如果你返回的是正确的缓 存报头,它仍然会被缓存。这样的话,再把查询字符串改成类似于”/default.aspx?456”,那么服务器将又返回一个新的版本。因此,当你想响 应得到缓存时,就要确保你在各处使用了一致性的URL。在主页里,如果你请求了一个URL为”/welcome.gif”的文件,那么确保在其他页面里在 请求该文件时也使用相同的URL。常见的一个错误是,有时会从URL中省略”www”子域。www.pageflakes.com/default.aspx与pageflakes.com/default.aspx是不同的,两者会被分别的缓存。 静态内容会被缓存得更久 静态内容可以被缓存得更久,例如一个月。  如果你正考虑应该只缓存几天,以便当你修改文件后,用户可以很快获取到新的版本,那么你错了。如果一个文件是通过设置过期报头(expires header)来缓存的,当你更新它时,新的用户可以立即获取到最新的版本,而老的用户只能看到旧的内容直到它在浏览器端过期。因此,只要你正在使用过期 报头来缓存静态文件,把值设的越大越好。 例如,你已经通过设置过期报头值为3天来缓存一个文件,一个用户将在今天获取到该文件,并且保存在缓存区里直到三天过后;另一个用户将在明天获取到该文 件,并缓存起来直到明天之后的三天。如果你后天改变该文件,第一个用户将在第四天看到它,第二个用户将在第五天看到它。因此,不同的用户将看到该文件的不 同版本。结果是,设置一个低值对于保证所有用户在最短时间内得到最新的版本是没有帮助的。你将不得不通过修改文件的URL来确保所有人立即获得完全相同的 一个文件。 你可以使用IIS管理器来为静态文件设置过期报头,后面的内容将会介绍如何设置。 使用缓存友好的文件夹结构 把要缓存的内容存储在一个共同的文件夹内。例如,把你网站的所有图片存储 在”/static”文件夹内,而不是把图片分别地存储在不同的子文件夹下。这将有助于你在整个网站范围内使用一致性的URL,因为从任何地方你都可以使 用”/static/images/ somefile.gif”。稍后,我们将学到,当把静态缓存文件放在一个共同的根文件夹内后,转移到一个内容传送网络将很容易。 重用相同的图形文件 有时我们把相同的图形文件存储于几个不同的虚拟目录下,以便可以书写很短的路径。例如,你 有一个indicator.gif文件在根目录,一些子目录和CSS目录里。这样做是因为你不必担心从不同地方访问的路径问题,你只需要使用文件名作为相 对URL。这却对缓存没有帮助。文件的每个拷贝都分别地缓存在浏览器端。因此,你应该把工程中所有的图像文件汇集到根目录下的”static”文件夹下, 除去重复的,在所有页面和CSS文件里使用相同的URL。 改变文件名来使缓存过期 当你更改一个静态文件的时候,不要仅仅只是更新文件本身,因为它已经在客户端的浏览器缓存了。你需要更改文件名,并且更新所有各处的引用,这样浏览器才会 获取到新的版本。你也可以把文件名存储在数据库或者配置文件中,通过数据绑定来动态的生成URL。以这种方式,你可以在一处来改变URL,而使整个站点立 即得到更新。 使用版本号来访问静态文件 如果你不想因为要保存同样的文件的不同拷贝而使静态文件夹变得混乱,你可以使用查询 字符串来区分同一文件的各个版本。例如,一个GIF文件可以和一个虚拟的查询字符串组合来访问,如”/static/images /indicator.gif?v=1″。当你更改了indicator.gif,你可以覆盖掉原来的文件,然后把所有到这个文件的引用更新为” /static/images/indicator.gif?v=2″。这样你可以重复修改同一文件,然后用新的版本号来更新所有到这个文件的引用。 把可缓存的文件存储在不同的域中 把静态内容存储在不同的域中,总是不失为一个好的办法。首先浏览器可以打开另外的并发连接来下载静态文件。另一个好处是你不需要发送cookies到静态 文件。如果你把静态文件和你的web应用放在同一域中,浏览器会发送你的web应用产生的所有ASP.NET cookies和所有的其他cookies。这使得请求报头不必要的变大,浪费带宽。访问静态文件时你并不需要发送这些cookies。因此,如果你把静 [...]

2012年3月29日13:51 评论关闭
备案信息:冀ICP备10007948号