这是用C#做的,我在本地进行调试的时候,读取word文档到textbox都没有问题,然而设置好IIS后,进行访问后,就不能读取word文档。代码如下:
sql = "select SendFileAtt from SendFile where SendFileNum='" + row.Cells[2].Text + "'";
                    sqlcmd = new SqlCommand(sql, sqlcon);
                    sqldr = sqlcmd.ExecuteReader();
                    sqldr.Read();
                    String name = sqldr["SendFileAtt"].ToString();//读取存储在数据库中附件的名字
                    String[] tempt = name.Split('.');
                    foreach (String i in tempt)
                    {
                        if (i.ToString() == "doc")//程序执行到这里的时候,拆分的字符是空值,没法进行下一步。
                        {
                            Microsoft.Office.Interop.Word._Application wordapp = new Microsoft.Office.Interop.Word.Application();
                            wordapp.Visible = false;
                            object file = "http://172.21.180.32/SF/" + name;    //SF是IIS的虚拟目录
                            object nullobj = System.Reflection.Missing.Value;
                            Microsoft.Office.Interop.Word.Document doc = wordapp.Documents.Open(ref file, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
                            AttTextBox.Visible = true;
                            AttTextBox.Text = doc.Content.Text;
                            doc.Close(ref nullobj, ref nullobj, ref nullobj);
                            wordapp.Quit(ref nullobj, ref nullobj, ref nullobj);
                            sqlcon.Close();
                        }
                    }

解决方案 »

  1.   

    String[] tempt = name.Split(new char[]{'.'});??? 
      

  2.   

    给你提几点建议,你尝试着调试一下,或许就能解决问题。if(sqldr.Read())
    {
        String name = sqldr["SendFileAtt"].ToString();//这一句,看看到底有没有取得信息到name里面。
    }
    else
    {
        //没有取得需要处理。
    }String[] tempt = name.Split('.'); foreach (String i in tempt) 

        if (i.ToString().ToLower() == "doc")//要注意大小写
    }
    sqldr.Close();//需要显示关闭datareader对象。极有可能你根本就没有取出东西来。    
     
          
    -------------------------------------------
    ◆◆◆大师电吉他基础 视频教程◆◆◆
    -------------------------------------------
      

  3.   

    我上面错了一个地方。
    String name这个应该定义在if else 体外面。
    应该是这样:String name = String.Emptyif(sqldr.Read()) 

        name = sqldr["SendFileAtt"].ToString();//这一句,看看到底有没有取得信息到name里面。 

    else 

        //没有取得需要处理。 
    } String[] tempt = name.Split('.');  foreach (String i in tempt)  
    {  
        if (i.ToString().ToLower() == "doc")//要注意大小写 

    sqldr.Close();//需要显示关闭datareader对象。 
    试试看
      

  4.   

    这个问题在本地调试的时候都没有问题,name的值也取到了。我怀疑是使用IIS,从网络访问后,ASP.Net的用户有访问权限控制
    我在web.config中配置了<identity personate="true">后,内容都显示不出来。所以我想请教,对于这个应该怎么配置