我的代码如下: [WebMethod]
    public bool LoadePicture(string picName, out byte[] dsData, out string errorMsg)
    {
        SqlConnection conn = new SqlConnection(connstring);
        try
        {
            DataSet dsPicture = new DataSet();
            dsData = null;
            conn.Open();
            SqlDataAdapter sqlDA = new SqlDataAdapter("Select * From Picture where 1<>1 ", conn);
            sqlDA.Fill(dsPicture, "Picture");
            DataRow r;
            r = dsPicture.Tables["Picture"].NewRow();
            string fileName = @"I:\" + picName + ".JPG//从网络盘(映射盘)
            if (File.Exists(fileName))
            {
                byte[] picbyte; 
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                picbyte = new byte[fs.Length];
                fs.Position = 0;
                fs.Read(picbyte, 0, Convert.ToInt32(fs.Length)); 
                r["P_XT"] = picName;
                r["P_Picture"] = picbyte;
                dsPicture.Tables["Picture"].Rows.Add(r);
                sqlDA.Dispose();
                errorMsg = "";
                dsData = serverbase.SerializationDataset(dsPicture);
                return true;
            }
            else
            {
                errorMsg = "沒有此圖片";
                dsData = null ;
                return false;
            }
        }
        catch (Exception E)
        {
            errorMsg = E.Message.ToString();
            dsData = null;
            return false; 
        }
        finally
        {
            conn.Close();
        }
         
    }
如果是本地盘,一点问题也没有,是网络盘就读不到了,这句都是返回false,if (File.Exists(fileName))
为什么?有高手能解决吗?
网络盘在webservice中应如何写呢。请帮我改一改。

解决方案 »

  1.   

    举例已经把\\192.168.1.1\doc\映射为 Z:盘 那么你应该是不能通过z:\直接访问的,而只能通过 \\192.168.1.1\doc\来访问。 
    有种说法是要访问网络硬盘需要启动explorer进程,但是服务程序是不能启动该进程的。虽然我不十分理解,但是我写过服务程序里面确实也遇到这个问题,就是使用绝对地址来解决的。使用绝对路径!
      

  2.   

    报“使用者和密码不正确”的错误,应该是我手工在windows下连接了网络盘,在webserive下可能不认,安全机制的原因吗
    不知如何在webservice下通过验证。
      

  3.   

    确定你的IIS是使用系统管理员的身份启动的,就是 在服务的属性里面的“登陆”使用填写系统管理员的用户名和密码。代码和你上面的一样的。
    如果是 
    string path = @"\\192.168.2.1\pic\helle.jpg";File.Exists(path);你试试看,在服务里面返回应该是true的。但是:string path=@"Z:\hello.jpg";File.Exists(path) 
    就是false。
      

  4.   

    同样还是会出现“错误的名称和密码”的错呀。
    要解决验证如何通过的问题就可以了。IIS如何能登入@"\\192.168.2.1\pic\helle.jpg"; 
      

  5.   

    刚才我在本地试了一下,尽管跟你的错误不同,但是还是没能使File.exists返回true,看来帮不了你了:(