分类目录归档:服务器配置

已解决问题:从Excel中读数据到数据库,本地VS运行都成功,网站发布后不能读取数据

问题如标题:先上代码

String path = Server.MapPath("~/UploadExcel/");

 string FileName = path + DateTime.Now.ToString("yyyyMMddHHmmss") + fuload.FileName;

 fuload.PostedFile.SaveAs(FileName);

      string connstr2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended   Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

        string connstr2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0;HDR=YES\"";

            OleDbConnection conn;
            if (fileExtenSion.ToLower() == ".xls")
            {
                conn = new OleDbConnection(connstr2003);
            }
            else
            {
                conn = new OleDbConnection(connstr2007);
            }
            
            conn.Open();
      …………

经过跟踪,发现执行到   conn.Open()时就挂了,以前挂在另一个服务器上没问题,现在换了一个服务器就不行了,在本地VS里面调试也没问题,
——————————————–

解决方法:
一、确认字符串拼写正确,例如:
string FileName = path + DateTime.Now.ToString("yyyyMMddHHmmss") + System.IO.Path.GetFileName(fuload.FileName);
二、
你传的是什么文件?xlsx?服务器是否安装Microsoft.ACE.OLEDB.12.0;和Microsoft.Jet.OLEDB.4.0;驱动
三、
如果服务器是64位系统的IIS7,则是因为Oledb.4.0在64位系统上不支持,在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true;

检查以上各个问题

——————————————-

贴上一段运行成功的完整代码
/// <summary>  
        /// 读取Excel文件到DataSet中  
        /// </summary>  
        /// <param name="filePath">文件路径</param>  
        /// <returns></returns>  
        public static DataSet ToDataTable(string filePath)  
        {  
            string connStr = "";             
            string fileType = System.IO.Path.GetExtension(fileName);  
            if (string.IsNullOrEmpty(fileType)) return null;  
   
            if (fileType == ".xls")  
                connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath+ ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";  
            else 
                connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath+ ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";  
            string sql_F = "Select * FROM [{0}]";  
   
            OleDbConnection conn = null;  
            OleDbDataAdapter da = null;  
            DataTable dtSheetName= null;  
   
            DataSet ds = new DataSet();  
            try 
            {  
                // 初始化连接,并打开  
                conn = new OleDbConnection(connStr);  
                conn.Open();  
   
                // 获取数据源的表定义元数据                         
                string SheetName = "";  
                dtSheetName= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });  
   
                // 初始化适配器  
                da = new OleDbDataAdapter();  
                for (int i = 0; i < dtSheetName.Rows.Count; i++)  
                {  
                    SheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"];  
   
                    if (SheetName .Contains("$") && !SheetName .Replace("'", "").EndsWith("$"))  
                    {  
                        continue;  
                    }  
   
                    da.SelectCommand = new OleDbCommand(String.Format(sql_F, SheetName ), conn);  
                    DataSet dsItem = new DataSet();  
                    da.Fill(dsItem, tblName);  
   
                    ds.Tables.Add(dsItem.Tables[0].Copy());  
                }  
            }  
            catch (Exception ex)  
            {  
            }  
            finally 
            {  
                // 关闭连接  
                if (conn.State == ConnectionState.Open)  
                {  
                    conn.Close();  
                    da.Dispose();  
                    conn.Dispose();  
                }  
            }  
            return ds;  
        } 

————————————————–
给出几个参考链接

C#读取Excel几种方法的体会:
http://developer.51cto.com/art/201302/380622.htm

Excel访问连接字符串中的的HDR=YES; IMEX=1含义
http://blog.csdn.net/ecnuzhangsq/article/details/5907689

Persist Security Info参数的作用:
http://sanduole.blog.51cto.com/101253/21259

CSDN论坛帖子
http://bbs.csdn.net/topics/390221016?page=1#post-394464344

提供与访问Excel表数据的连接字符串
http://www.connectionstrings.com/excel

.net如何读取客户端Excel文件
http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/a31ed577-7ad9-4f56-b8bc-54ea4aefb0eb/

ActiveXObject 对象
http://msdn.microsoft.com/zh-cn/library/6958xykx(VS.80).aspx

C#操作Excel(读取)
http://www.cnblogs.com/canyan3073/archive/2010/08/20/1804701.html

飞鱼星路由器动态域名的设置方法

之前一直在用花生壳申请的免费域名做动态解析来访问自己配置的服务器,近期发现花生壳在路由上连接越发不稳定,时常出现掉线,后查看网络被告知一些品牌的路由器只支持花生壳的付费域名,哎,汗,只能另寻他法,现在改用了在公云的服务http://www.3322.org(新域名:http://www.pubyun.com)

1、首先在http://www.3322.org(新域名:http://www.pubyun.com)上面注册一个用户名和密码,然后申请一个可用的域名,如下图中的“lianzhoujiudian.3322.org”。

2、然后进入飞鱼星路由器的配置界面,在高级选项→动态域名里面做如下的配置:
配置好保存后,外网用户便可通过上图中的“http://lianzhoujiudian.3322.org:端口号”的形式登录路由器的配置界面,以轻松实现管理。

步骤不复杂,一般的路由器只要支持3322.org动态域名解析,都可以参照上面的方法配置
参考来源:http://www.5636.com/netbar/luyou/9931.html