Edi Wang

.NET and Azure Developer

ASP.NET

ASP.NET中URL重写和Session冲突的问题

今天在改博客系统的一个Bug的时候,程序里用了Session,结果一跑就报错:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true  时,才能使用会话状态。还请确保在应用程序配置的<configuration>\<system.web>\<httpModules>节中包括  System.Web.SessionStateMod 或自定义会话状态模块。然而用VS自带的Web Server调试一点问题都没有。唯独在IIS下跑的时候老报错,错误语句就是那行用了Session的程序。唯一的区别就是VS下调试时,URL没有重写。于是我回到IIS上,用完整的URL试了下,果然木有问题。 我所使用的是URLRewriter.dll,似乎是当年微软提供的,经过一番查找,似乎有很多人和我有同样的问题,不管他们用的是不是URLRewriter.dll。 奇怪的是,并不是 …
ASP.NET Session URL

ASP.NET读写Web.Config

先说下,我写的很多技术类文章都是面向初学者的,为了便于他们理解,我会写的尽量详细,包括很多最基础的操作步骤,并且有些说法可能不太严谨,高手请勿追究。如果写的太专业,不仅没人看我的博客,我还会被喷装B。请高手们原谅。 以前我做网站设置模块的时候,总喜欢把设置都写在一个xml文件里,然后用程序去读写这个xml文件。虽然.NET对XML的支持很好(现在有Linq To XML了),并且我也使用了一个XML工具类,但总体来说,自己手动读写一个xml文件,还是有点蛋疼的。一不小心就容易出错。 今天我突然想到,我们曾经无数次在Web.Config里读取过连接字符串,那么为何不把网站的设置信息也保存在Web.Config中呢?只要使用System.Configuration下的ConfigurationManager类就可以操作Web.Config了,微软都给我们封装好了! 为了验证这一点的可行性,我写 …
ASP.NET Web.Config

ASP.NET GridView超链接列取值

场景:开发一个简单的Web文件管理功能,第一列是指向文件的超链接,最后一列放一个删除按钮。现在要求按删除按钮后,删除对应的文件。 思路:获取当前行的第一列的值,然后调用File.Delete()方法。 按照以往的写法,我们会在GridView的SelectedIndexChanged事件中,先找到当前行: int i = GridView1.SelectedIndex; 然后通过 GridView1.Rows[i].Cells[0].Text来访问当前行第一列的数据。 但是,如果不幸遇到超链接列,这种写法取出的缺是空串。我研究了好久,最后发现,HyperLink Field在GridView中要当作Web Control来处理。所以必须先转换为HyperLink,然后才能访问其Text属性。写法如下: ((HyperLink)GridView1.Rows[i].Cells[0]. …
ASP.NET GridView

ASP.NET Repeater控件绑定List<T>泛型的写法

我们在开发分成架构的Web应用程序时,常常把数据库中的记录放到一个List中,做到了良好的封装。调用业务逻辑的程序猿也无需知道库表结构就可以直接使用“Model.属性”来访问各个字段的数据了。但在做显示的时候,初学者可能会碰到一些问题。以往大家在显示控件(如Repeater)上绑定的都是DataSet,ASPX页面里写的是“<%# Eval("字段名")%>”。那如何绑定一个List泛型呢? 其实,Repeater控件是支持绑定到业务对象的,并且我们也不再用Eval表达式了。看一个例子: 后台代码: GeekStudio.BLL.Blog optBlog = new GeekStudio.BLL.Blog(); Repeater1.DataSource = optBlog.GetModelList(); Repeater1.DataBind(); 其中,GetModelList()返回的是 …
ASP.NET Generics

ASP.NET中GridView的多选、删除

我们在开发网站的时候,有个很常见的功能,就是要让GridView能够选择多项,然后一起删除。效果类似下面这张图,这是我网站后台管理页面中的一个GridView。 其实制作这个效果不难,思路是:增加一个checkbox列,这个列的数据绑定到表的主键(比如Id),前台的代码可以在VS的可视化设计器中完成,你要做的仅仅只是增加一个CheckBox列。 前台代码如下: <asp:gridview id="GridView2" runat="server" autogeneratecolumns="False" datakeynames="ID" datasourceid="AccessDataSource2" allowpaging="True" allowsorting="True" cellpadding="4" enablemodelvalidation="True" forecolor= …
ASP.NET GridView

浅谈SQL注入攻击与防范

前置知识:数据库、SQL语句、Web编程(ASP、ASP.NET) 前言:这次要谈到问题,其实不是什么新鲜的内容了,早在许多年前,就在各种黑客杂志和网站上提及过。这次我重新谈起这个问题,一方面是为了完成作业,另一方面我会结合目前的前沿技术来谈谈在SQL注入方面的新进展和防范。希望大家能以技术学习为目的,不要利用SQL注入漏洞进行非法攻击。 一、SQL注入漏洞是如何产生的 我们知道,一个动态网站,往往是要和数据库紧密交互的,即按条件从数据库中取出数据在网页上送显,或按用户的操作去改变数据库中的内容。最普遍的应该是新闻系统。我们经常在地址栏看形如这样的URL:http://某网站/ReadNews.asp?id=32,这个URL的作用是把ID=32传给 ReadNews.asp,ReadNews接受到这个id后,就会到数据库中找到id为32的新闻,取出这条记录并将它显示在网页上。然而,这样真 …
ACCESS ASP.NET SQL

GridView生成序号

一个经常碰到的情况:GridView需要添加一个序号列,并且从1开始自动编号。而数据库中的ID往往是不连续的(会有记录被删除的情况),我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。 思路:在GridView每一行,既Row,被生成的时候,在序号单元格中输出该行的ID+1(第一行是从0开始编的,因此要+1) 实现: 首先,在ASPX页面中,需要手动给GridView添加一个BoundField。示例代码如下: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EnableModelValidation="True"> <Columns> <asp:BoundField HeaderText="序号"> < …
ASP.NET GridView

Win7下利用IIS自建网站全攻略!包括ASP和ASP.NET动态网站!高手勿入

首先说明,本文是入门水平,不会介绍IIS中的高级技巧,旨在引领不明白网站建设的童鞋入门,所以高手们可以绕路,不要浪 费青葱。。万一看了,请笑而不语,多多包涵。 读者需要了解网站开发(网页制作)和一些计算机网 络的基本知识。本文不会介绍如何去编写网站以及网络的设置。只介绍如何用IIS架设一个现有的网站。 自己建网站一直是很 多人的梦想。大家一定都多多少少学过网页制作。可做出来的网页,如何在internet上给朋友们看呢?如果你对服务器、网络等不了解,或没G购买虚拟主 机,没关系,你可以用自己的电脑DIY一个“服务器”出来!(当然,个人电脑做服务器是有很大局限性的,这个后面会讲) 其实早在Win98 里,就可以自己建web服务器了。那个时候的组件叫做PWS,2000以后叫做IIS了。并且一直延续到今天。微软在个人版的系统中也预留了阉割版的 IIS,以便网站开发人员自己做测试。 在XP时代,个人 …
ASP ASP.NET IIS