还是那个ASP的网站,让添个小功能;OK,没问题,不过我肯定是用asp.net来写,绝不会去用asp来写的,虽然这两天,已经把asp搞得半懂不懂了;
功能很简单的,却碰到一个小问题,就是用户状态,哪个用户登录了,这个当然很容易,看它的登录页面的代码,是写的session,我用C#读这个session,读不到,去网上查了查,搜出来不少文章,却没有什么实质的说明,也有的人说,asp与asp.net不可能共用session,这也有道理,session是应用程序级的变量,在当前窗口能用,关了窗口就消失了(记得好像是,只要这个窗口开着,再打开一个窗口也可以访问这个session)。
不想去管这些了,毕竟用不了session还可以用cookie,cookie是客户端的东西,只要是一个域下面的,应该是都可以访问的;它原的asp页面没有写cookie,我给它写了一个,然后用C#来读,也是读不到;有些郁闷了;
又去网上查了一下,说是asp直接写的cookie,asp.net无法直接读到,要重写一下,ASP代码如下:
Response.Cookies("AdminName")=rs("username")
Response.Write Request.Cookies("AdminName")
第二行看起来有些多此一举,代码有些奇怪,不过这样写,asp.net的确可以正确读取到,asp.net中的代码如下:
AdminName = Request.Cookies["AdminName"].Value.ToString();
由于我传的值有可能是中文的,我试了一下中文,结果asp.net读取到是
%D5%FE%D6%CE%B4%A6
这也很简单啊,转一下就行了,结果用Server.UrlDecode转不过来,想起前一段写百度小偷程序时,一个代码转换方法;如下:
System.Web.HttpUtility.UrlDecode(AdminName, System.Text.Encoding.GetEncoding(936));
这样就可以获得正常的中文了;
我把上面的思路整理一下;
在ASP中写入cookie的方法是:
Response.Cookies("cookie名称")="cookie的值"
Response.Write Request.Cookies("cookie名称")
那么在asp.net中读取时,包括读出中文:
string cookie;
cookie= Request.Cookies["cookie名称"].Value.ToString();
cookie= System.Web.HttpUtility.UrlDecode(cookie, System.Text.Encoding.GetEncoding(936));
我这里只写了asp写入cookie,asp.net读取的方法,没有写asp.net写入cookie,用asp读取;有机会再研究吧
文章出自:http://hi.baidu.com/2hill/blog/item/3535ee12d44d2dccc3fd78bd.html