ASP.NET页面启用gzip压缩
启用gzip压缩前后对比: 大多数浏览器自带了gzip解压功能,经gzip压缩后的页面不需做格外的操作就能正常显示了。但url若做为接口使用,在应用程序中获取返回内容时,则需手工进行解压,示例代码: 顺便检测了下各大门户站,都启用了gzip压缩,下边为www.qq.com检测信息:
启用gzip压缩前后对比: 大多数浏览器自带了gzip解压功能,经gzip压缩后的页面不需做格外的操作就能正常显示了。但url若做为接口使用,在应用程序中获取返回内容时,则需手工进行解压,示例代码: 顺便检测了下各大门户站,都启用了gzip压缩,下边为www.qq.com检测信息:
说明 ·压缩时GZipStream构造函数第三个参数一定要设置为true,并且一定要先调用Close再来复制,否则不能正常解压(测试发现调用Close后会追加几字节内容); ·解压时直接使用Read方法读取内容,不能调用GZipStream实例的Length等属性,否则会出错:System.NotSupportedException: 不支持此操作;
mzwu.com下有一个SetCookie.asp,内容如下: sjkuku.com下有一个Cookie.htm,内容如下: 访问Cookie.htm结果: SetCookie.asp中保存的cookie丢失了,双击IE状态栏隐私报告图标: 可以看到,原因是IE的隐私策略阻止了来自mzwu.com域的cookie,在SetCookie.asp中加入P3P头可解决问题: 后记:从表面现象来看,似乎是实现了B域在A域下存取cookie,但进一步测试发现,这样生成的cookie仍只能在B域页面中读取,A域名页面是无法直接读取的,同样,A域生成的cookie在B域页面中也一样不能读取。
突然间,访问站点所有页面都出错,全提示:未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问。最终在McAfee访问保护日志中找到了原因: 2009-12-9 9:29:17 已由访问保护规则禁止 NT AUTHORITY\NETWORK SERVICE c:\windows\system32\inetsrv\w3wp.exe C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\73aadb6b\28e3561d\assembly\tmp\BJPV18EK\AspNetPager.DLL 通用最大保护:禁止在 Windows 文件夹中创建新的可执行文件 已阻止的操作: 创建 解决方法:…
平时都是在CMD中直接执行"dir",使用C#时竟不确定应该调用哪个exe了,其实"dir"可看作"cmd.exe /C dir"的简写方式,这样就该知道怎样在C#中调用了,写下来,备忘吧。
在ASP.NET中,若要将一个URL参数值赋值给一个变量,都得先判断参数是否存在,否则等待你的很可能就是"未将对象引用设置到对象的实例",以前都是Request.QueryString != null比较后再赋值,但今天在一个项目中发现竟还报错,代码大致结构如下: 后来发现URL为:http://www.mzwu.com/?id=,原因是Request.QueryString的值为一个空字符串,所以通过了Request.QueryString != null的验证,但将空字符串传给int.Parse方法,还是报错了,可见,光判断参数是否存在还是不够的,还必须得进一步判断是否有传值才行,最终代码改为: 原因是:当参数不存在时,参数值为null,调用string.IsNullOrEmpty方法,null会自动转换为空字符串;当参数存在但不传值时,参数值为空字符串,string.IsNullOrEmpty很容易就判断出来了!
假如有如下一张表: 我们用工具为他生成了基本的操作语句: 但在实际运用中,通常不是把CatalogName直接放在Products表中的,Products表中只存放CatalogID的值,表结构如下: 同样也用工具生成了基本的操作语句: 但在使用中有个问题,我们希望在用户界面上显示CatalogName,而不是CatalogID,这时我们很"聪明"的想到,多表查询嘛,很简单: 这只是个简单的例子,实际项目中很多表间的字段都是关联的,于是自动化工具的恶梦就来了,不论他怎么智能,永远满足不了需求,只好手工写了,我们又成功的理由充分的说服自己成了代码机器-_- 要自动化就必须简单化,上边例子还是用工具生成各表的基本操作语句,对于CatalogName,可在需要时再调用Catalog表的操作语句另外进行查询:
新建一个ASP.NET页面,从工具箱中拉一个HTML的Input(Text)控件和标准Button控件,并写相关代码: Req.aspx: Req.aspx.cs: 怎么提交,Request.Form始终没有值。后来发现,给Text1加上runat="server",就能正常获取值了-_-,今天在同事的提醒下,发现原来VS默认没有给控件添加name属性,添加上去就正常了: 那为什么加上runat="server"也可以呢?查看了下网页源代码,发现加了runat="server"后,在生成的源代码中自动加上了name属性!
错误代码如下: 正确的代码(注意红色部分写法):
我们可以将字符串、图片等资源存放在全局资源文件中,这样ASP.NET网站所有.aspx文件中都可以使用这些资源,例如: 使用示例 或 为不同的语言选择资源文件 有时,同一个界面需要有不同的语言版本,全局资源文件可以帮助我们解决这个问题,只需为其他语言建立相应资源的文件即可,例如: Mzwu.en-US.resx:专用于英语(美国)的资源文件。 Mzwu.zh-CN.resx:专用于中文(中国)的资源文件。 Mzwu.es-AR.resx:专用于西班牙语(阿根廷)的资源文件。 Mzwu.ro-RO.resx:专用于罗马尼亚语(罗马尼亚)的资源文件。 然后只需为ASP.NET 网页指定区域性和 UI 区域性即可,程序会自动选用相应的资源文件。…