我在程序中使用了多线程技术,定时执行一段代码,代码中包含了对文件夹及文件的创建以及写入操作,但是运行的时候出现错误:对路径“f:\xxx\xxx\web\DownloadData\2010\5”的访问被拒绝。
不使用多线程做这些操作是没问题的,本地测试也没问题,就是传到虚拟主机空间上出现此错误,请高手们帮忙解答一下

解决方案 »

  1.   

    "不使用多线程做这些操作是没问题的,本地测试也没问题,就是传到虚拟主机空间上出现此错误,请高手们帮忙解答一下"
    1.你仔细看看你的多线程对同一个文件是如何操作的,应该要使用锁(不能同时多个线程对同一文件进行处理的)
    2.你再试试用自己的IIS或是其他的Web Server去测试一下是否可以。
      

  2.   

    我本地测没问题的,多线程操作代码如下:    public class DownloadTask
        {
            private static readonly DownloadTask _ScheduledTask = null;
            private Timer UpdateTimer = null;
            private int Interval = 5 * 60000;
            private int _IsRunning;        static DownloadTask()
            {
                _ScheduledTask = new DownloadTask();
            }        public static DownloadTask Instance()
            {
                return _ScheduledTask;
            }        public void SetInterval(int interval)
            {
                this.Interval = interval;
            }        public void Start()
            {
                if (UpdateTimer == null)
                {
                    UpdateTimer = new Timer(new TimerCallback(UpdateTimerCallback), null, Interval, Interval);
                }
            }        private void UpdateTimerCallback(object sender)
            {
                if (Interlocked.Exchange(ref _IsRunning, 1) == 0)
                {
                    try
                    {
                        Download.Start();
                    }
                    finally
                    {
                        Interlocked.Exchange(ref _IsRunning, 0);
                    }
                }
            }        public void Stop()
            {
                if (UpdateTimer != null)
                {
                    UpdateTimer.Dispose();
                    UpdateTimer = null;
                }
            }    }
      

  3.   

    虚拟空间主机中执行你程序的 IIS 帐号对这个目录没有写入的权限。需要调整 Windows 帐号中的用户权限,对指定的文件夹需要写入操作权限。
      

  4.   


    空间是星外的系统,默认使用asp.net模拟的方式进行身份认证,但是现在已经特例对我的网站目录增加了Network Service的完全控制权,不知道还需要设置哪些权限
      

  5.   

    添加Authenticated Users的权限
      

  6.   

    我是添加了everyone解决了问题