从0开始做网站

来源:互联网 发布:淘宝怎么自定义尺码 编辑:程序博客网 时间:2024/04/29 18:39

第一步:做网站首先开始就要设置IIS吧,没这个做好之后都不知可不可以用了!
在XP上装个IIS 5.1,设好主目录后就用VS2005做个Default.apsx打算试一下可用否,但....出错了,果然万事起头难啊!
报"HTTP 500 内部服务错误",google后将IE的"显示友好 HTTP 错误信息"关闭,得到进一步的错误为"server application error",再次拿起法宝-google,得出要按以下顺序做:
1、检查你的DTC服务(全名:Distributed Transaction Coordinator)是否可以正常启动。
2、如果出错(刚好我的就是出错)
    在CMD下执行以下命令:
    cd %windir%/system32/inetsrv
    rundll32 wamreg.dll, CreateIISPackage
    regsvr32 asptxn.dll
    但我照做到第二步出现了“rundll32 wamreg.dll, CreateIISPackage  丢失条目”,无法了,再次google发现原来CreateIISPackage是区分大小写的(看来我的习惯不好啊,以后就要用C#写程序了,这可怎么办呢),而且wamreg.dll,后一定要用个空格--!。一翻折腾后,终于可以正常访问ASPX文件了,天啊这第一步难度就不少了。。。。

第二步:数据连接。
在网站中要使用数据库呢,而且Access及Sql都要用到,先连接个Access的吧

  1.         string strConnection = "Provider=MicroSoft.Jet.OleDb.4.0;";
  2.         strConnection += @"Data Source="+strFileName+@";User ID=admin;Password=;";
  3.         strConnection += @"Jet OLEDB:Database Password=123";
  4.         string queryString = "select * from JxcCon";
  5.         OleDbConnection myObjConnection = new OleDbConnection(strConnection);
  6.         OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, myObjConnection);

其中那个strFileName是在FileUpload.PostedFile.FileName中得到的!
上面的方法似乎不方便也不太安全,所以将那个连接密码放到web.config中

在web.config中加入:
  1.   <appSettings>
  2.     <add key="accessProviderConnectPWS" value="123"/>
  3.   </appSettings>
建立连接的语句改为:
  1.         string strConnection = string.Format("Provider=MicroSoft.Jet.OleDb.4.0;Data Source={0};User ID=admin;Password=;Jet OLEDB:Database Password={1}"
  2.             , strFileName, ConfigurationSettings.AppSettings["accessProviderConnectPWS"]);
  3.         OleDbConnection myObjConnection = new OleDbConnection(strConnection);
但生成时会提示:“System.Configuration.ConfigurationSettings.AppSettings”已过时:“Thismethod is obsolete, it has been replaced bySystem.Configuration!System.Configuration.ConfigurationManager.AppSettings”的警告,大意就是说那个ConfigurationSettings已被ConfigurationManager所代替了,但可能由于那个是新加入的功能吧,如果直接用using System.Configuration后就使用ConfigurationManager是会报错的,一定要在解决方案中按右键-》添加引用-》“System.Configuration.dll”才会正常。

但如果不止一个页面要使用Access数据库连接的话,每次都要写上面的连接语句太烦锁了,做个连接的类吧。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Text;
  5. using System.Data.OleDb;
  6. namespace MyClassSum
  7. {
  8.     public class AccessConnect
  9.     {
  10.         public static OleDbConnection strConnection(string strFileName)
  11.         {
  12.             string strConnection = "Provider=MicroSoft.Jet.OleDb.4.0;";
  13.             strConnection += @"Data Source="+strFileName+@";User ID=admin;Password=;";
  14.             strConnection += @"Jet OLEDB:Database Password=123";
  15.             return new OleDbConnection(strConnection);
  16.         }
  17.     }
  18. }

上面的页面代码变为:

  1. OleDbConnection myObjConnection = MyClassSum.AccessConnect.strConnection(strFileName);

在web.config上的<appSettings>....</appSettings>里面的内容就不需要了。
另外,数据连接打开后要及时关闭,如:myObjConnection.Close();如果使用DataAdapter的话,在连接未打开前它会自动打开,使用完毕后会自动关闭,但如果连接本来就是开着的,那DataAdapter使用完连接后并不会自动关闭,其他的比如DataReader则要手动打开和关闭数据连接。

第三步:使用cookie
    建立

  1.             HttpCookie myCookie = new HttpCookie("Jxc");
  2.             myCookie["AccessDataLocate"] = Page.Server.UrlEncode(fileName);
  3.             myCookie["CookieIdentity"] = Page.Server.UrlEncode(cookieIdentity);
  4.             myCookie.Expires = DateTime.Today.AddYears(10);
  5.             Response.Cookies.Add(myCookie);

    为什么要使用Page.Server.UrlEecode转换一下?因为要防止fileName中包含中文而引起乱码,读出值的时候要亦要使用Page.Server.UrlDecode()转换过来。

    读取

  1. HttpCookie myCookies = Request.Cookies["Jxc"];
  2. if (myCookies != null)
  3. {
  4.   string strAccessDataLocate=Page.Server.UrlDecode(Request.Cookies["Jxc"]["AccessDataLocate"]);
  5.   string strCookieIdeneity = Page.Server.UrlDecode(Request.Cookies["Jxc"]["CookieIdentity"]);
  6.   string strDisp = "";
  7.   strDisp = string.Format("AccessDataLocate键的值为:{0},CookieIdentity键的值为:    {1}", strAccessDataLocate, strCookieIdeneity);
  8.   Response.Write(strDisp);
  9. }
删除
  1.         if (Request.Cookies["Jxc"] != null)
  2.         {
  3.             HttpCookie myCookies = new HttpCookie("Jxc");
  4.             myCookies.Expires = DateTime.Now.AddMilliseconds(-1);
  5.             //或myCookie.Expires = DateTime.MinValue                           
  6.             Response.Cookies.Add(myCookies);
  7.         }