代码:
.....
 System.Security.Principal.WindowsImpersonationContext impersonationContext;
            impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
            FileStream fs0 = new FileStream(Server.MapPath(".") + "\\HOME\\register.txt", FileMode.Open, FileAccess.Read);
            //打开文本文件
            StreamReader sr0 = new StreamReader(fs0, Encoding.Default);
            string reg_info = sr0.ReadLine();
            sr0.Close();
            fs0.Close();
            if (reg_info != MACCPU_PASS)
            {                int counter;
                FileStream fs = new FileStream(Server.MapPath(".") + "\\HOME\\counter.txt", FileMode.Open, FileAccess.Read);
                //打开文本文件
                StreamReader sr = new StreamReader(fs, Encoding.Default);
                string num = sr.ReadLine();
                if (num == "")
                    counter = 0;
                else
                    counter = Int32.Parse(num);
                sr.Close();
                fs.Close();
                if (counter <= 5)
                {
                    int counter_new = counter + 1;
                    fs = new FileStream(Server.MapPath(".") + "\\HOME\\counter.txt", FileMode.Create, FileAccess.Write);
                    //建立StreamWriter为写做准备
                    StreamWriter rw = new StreamWriter(fs, Encoding.Default);
                    //使用WriteLine写入内容
                    rw.WriteLine(counter_new.ToString());
                    //将缓冲区的内容写入文件
                    //关闭rw对象
                    rw.Close();
                    fs.Close();
                }
                else
                {
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["schoolmanage2005ConnectionString"].ConnectionString); 
                    SqlCommand comm = new SqlCommand("delete from Role_user", conn);
                    conn.Open();
                    comm.ExecuteNonQuery();
                    conn.Close();
                    Response.Redirect("~/HOME/xueke.aspx");
                }
            }
            impersonationContext.Undo();
                }
............
在开发的本机上可以读\写 HOME\register.txt文件,可以部署到目标计算机上时,没有这段好象没有执行(我看HOME\register.txt的侄没有变化),是在目标计算机上没有找到HOME\register.txt文件?还是怪我用了本地模拟?,怎样解决呢?

解决方案 »

  1.   

    这个写法:Server.MapPath(".") + "\\HOME\\counter.txt", 有问题吗?为什么在目标计算机上没有找到这个文件呢,在本地计算机是可以读写的?
      

  2.   

    可能是权限问题,也可能是路径问题。先把文件系统读权限赋予aspnet 或者 network user。
      

  3.   

    已经赋予了aspnet 或者 network user的读权限啊
      

  4.   

    Server.MapPath(".")是“当前目录”,你确定你要的是这个吗?
      

  5.   

    我是在Global.asax文件中调用\HOME\counter.t,不会从其它页面有转到这个页面的,也就是说页面路径应该是没有问题的,
      

  6.   

    \HOME\counter.txt这个文件是先建在我的程序里的,你认为用什么路径呢?
      

  7.   

    我用Server.MapPath("/") + "\\HOME\\counter.txt,本地没有找到这个文件啊,怎么了呢?
      

  8.   

    比如你的IIS虚拟路径是http://127.0.0.1/Root
    那么你的语句就是 fs = new FileStream(@"http://127.0.0.1/Root/HOME/counter.txt", FileMode.Create, FileAccess.Write);
    找不到理所当然
      

  9.   

    是不是Server.MapPath("/") + "\\HOME\\counter.txt写法有问题?
      

  10.   

    http://127.0.0.1/Root/HOME/counter.txt,我的文件会在哪里呢?HOME/counter.txt这个文件我是先建在程序里的,路径应该是IP+虚拟目录+HOME/counter.txt啊
      

  11.   

    Server.MapPath("~") + "\\HOME\\counter.txt在本地找到了文件,我部署看看能找到吗
      

  12.   

    你的Root大概是个虚拟目录?
      

  13.   

    刚才部署了用Server.MapPath("~") + "\\HOME\\counter.txt,也不行
      

  14.   

    这个文件我可以这样访问到:http://192.168.0.99/keda/HOME/counter.txt  //keda 是虚拟目录
      

  15.   

    这样,你直接写文件目录,不要map了先看看是不是路径问题。其它问题慢慢研究。比如:“d:\\root\home\counter.txt”
      

  16.   

    就用这个目录看看:C:\\inetpub\\wwwroot\\keda\\home\\counter.txt
      

  17.   

    你好像用了impersonate,你确认impersonate到的那个账号密码正确吗?具有相应目录的访问权限吗?
      

  18.   

    如果你开发的时候是以虚拟路径的形式开发web应用程序的,那么部署的时候就要部署为虚拟目录。如果你开发的时候是以网站的方式开发web应用程序,那么部署的时候必须部署为一个网站。这两者在路径上有一个细微的差别,应该是虚拟目录的对应路径多一层,网站少一层。
    在2003系统下,可以分别采用虚拟目录,网站的方式开发。如果你的操作系统是2003,你可以分别以这两种方式Debug,可以发现这个问题。
    解决办法,根据实际情况,以网站形式部署或者以虚拟路径方式部署就可以了。