分类目录归档:服务器

服务器

已解决问题:从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

win7下 iis7 配置可以让局域网内其它用户访问

问题描述:
需要在win7下的iis7 配置网站并让局域网内的其他用户访问,前提是本机可以正常访问,

解决方法:
1、win7安装IIS后,本地测试没有问题,说明IIS的配置正确,如果本地测试有问题,先检查IIS安装配置情况。
2、检查计算机网络情况,发现本地网络正常。如果win7不能访问网络,请先正确配置网络连接。
3、检查防火墙设置,本文遇到的错误就是由于Win7自带的防火墙阻止了网站程序的端口,使得远程用户不能访问IIS。这里有两种方法解决。
A、关闭防火墙。控制面板-Windows防火墙-打开或关闭Windows防火墙(不推荐)
win7-防火墙
B、打开:控制面板-Windows防火墙-高级设置-入站规则,在入站规则窗口中找到”BranchCache内容检索(http-in)“选项并启用此规则。这时候远程用户通过网站地址即可访问站点程序,但是如果远程用户访问IIS的非80端口,也会出现不能访问的问题,这是因为“BranchCache内容检索(http-in)”只是启用了80端口。此时只需要添加一条新的入站规则,并指定端口号为网站程序的端口号即可,比如8080。具体方法如下:

win7-入站规则
在“Windows 防火墙”窗口的左边栏,选择-“入站规则”,在右边栏选“新建规则”,在弹出的“新建入站规则向导”窗口中执行: 端口–下一步–选中TCP以及特定本地端口,填入要开放的端口号(这里填入8888,当然也可以填写其他端口)–下一步–选中“允许连接”–下一步–选中所有选项:域、专用、共用–下一步–填入名称(这里填入IIS:8888)—完成即可。

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

之前一直在用花生壳申请的免费域名做动态解析来访问自己配置的服务器,近期发现花生壳在路由上连接越发不稳定,时常出现掉线,后查看网络被告知一些品牌的路由器只支持花生壳的付费域名,哎,汗,只能另寻他法,现在改用了在公云的服务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

关于应用程序池连接超时,数据库连接未及时关闭的系统报错, 以及该过程中使用DataSet和DataReader的区别

出现情况

我们在对数据库得操作过程中,如果频繁的操作DataReader对象且没有及时关闭数据库连接,就会出现“

超时时间已到。超时时间已到 但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用 并且达到了最大池大小。

”错误在操作DataReader时我们手动将其关闭

出现以下错误

问题解决方法:
我们在调用微软的数据库DBHelper时由于大量打开与数据库的连接并且未能及时关闭,导致数据库连接超时。
并附上一下内容:

ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader。并且这两个对象都可以将检索的关系数据存储在内存中。在软件开发过程中经常用到这两个对象,由于这两个对象在使用和功能方面的相似,很多程序员错误地认为DataSet和DataReader是可以相互替代的。这种想法是错误的,在这一小节将会讲到DataSet控件和DataReader控件的区别。

■与数据库连接

DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接。

Datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。

■    处理数据速度

DataSet读取、处理速度较慢。

DataReader读取、处理速度较快。

■    更新数据库

在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库。

在对DataReader中的数据进行更新后,没有办法进行数据库更新。

■    支持分页排序

在DataSet中支持分页、动态排序等操作。

在DataReader中没有分页、动态排序的功能。

■     占用内存

DataSet在 IIS 服务器上所使用的内存较多。

DataSet在 IIS 服务器上所使用的内存较少。

综上所述得出DataSet和DataReader有各自适用的场合。如果数据来源控件只是用来填入控件的清单成为其选项,或者数据绑定控件并不需要提供排序或分页功能的话,则应该使用 DataReader。反之,如果数据绑定控件需要提供排序或分页功能的话,则必须使用 DataSet,通过DataSet设置出来分页排序等页面面显示效果。

关于cs0016:未能写入输出文件…Microsoft.NET”Framework”v2.0.50727″Temporary ASP.NET Files”root”….”*.dll–“拒绝访问问题解决

关于cs0016:未能写入输出文件 “c:”WINDOWS”Microsoft.NET”Framework”v2.0.50727″Temporary ASP.NET Files”root”….”*.dll–“拒绝访问”

解决方法,亲自实验通过,虽然只是IIS的一个设置问题,还是写出类分享一下。

注明:网站项目的运行平台是 windows server 2003 + IIS6.0+MSSQL2005

具体解决方法如下

第一步、右键应用程序池中,相应的应用程序池

第二步、

进行这两处的设置后,项目即可正常访问

解决 在IIS上配置MVC应用程序时报错的问题:未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”……

方法:来自博客园

未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类

最后,查阅资料,发生这个错误的原因在于安装了高版本的.net framework 导致这种错误,可以尝试通过下面的方法解决:

 

 

第一步:找到配置文件applicationHost,参考路径: %windir%/system32/inetsrv/config/applicationHost

 

 

找到

<add name=”ServiceModel” type=”System.ServiceModel.Activation.HttpModule, System.ServiceModel,Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ preCondition=”managedHandler” />

 

在managedHandler 加上“,runtimeVersionv2.0″ 即可,如图:

注:该行代码位于文件的最后一行

第二步:在命令提示符CMD上打开地址 C:\Windows\Microsoft.NET\Framework\v4.0.30319 然后输入aspnet_regiis.exe -iru 后回车即可,参考下图

 

 

通过上面的操作,一般都可以解决这个问题。然后再打开svc 路径运行就可以了,

在IIS7上部署MVC3应用程序

Win7 + IIS7(系统显示IIS6.1)+MVC3

注意

1.在部署MVC应用之前,一定要确保你的程序BIN文件夹下面是否包含 System.Web.Mvc.dll(非常重要)

a.如果没有, 请在你的MVC项目中,打开引用列表

b.鼠标右键点击System.Web.Mvc,选择“属性”,将“复制本地”设为True (默认为False)

c.然后生成一下项目,System.Web.Mvc.dll就会出现在BIN文件夹下了

2.IIS应用程序池的.NET Framework版本设置为:.NET Framework4.0

3.检查站点的处理程序映射是否存在:

ExtensionlessUrlHandler-Integrated-4.0

ExtensionlessUrlHandler-ISAPI-4.0_32bit

ExtensionlessUrlHandler-ISAPI-4.0_64bit

如果缺少请在命令行中运行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

常见错误

1.无法识别的属性“targetFramework”。请注意属性名称区分大小写。

IIS应用程序池,.NET Framework版本改为4.0(原来为2.0)。

2.无法打开登录所请求的数据库 “dbName”。登录失败。 用户 ‘IIS APPPOOL\DefaultAppPool’ 登录失败。

这里只要选LocalSystem或NetworkService就可以解决问题。(物理路径目录访问权限问题)