推广 热搜: 教师      系统  中国  行业  参数  设备  机械  基金 

asp数据库与登录验证(NET中访问MySQL数据库)

   日期:2024-12-01     移动:http://mip.tpjde.com/quote/1853.html

对于许多新手来说,如何在服务器上部署网站并不了解,这个教程希望对新手有帮助。

asp数据库与登录验证(NET中访问MySQL数据库)

1、IIS服务器

2、.Net framework3.5(方便起见,我们这里framework说的都是指的这个版本)

这两个软件都需要我们自己手动操作安装到服务器里面。那到底是先装哪一个呢,为了方便起见,一般我们都先安装IIS服务器,然后再安装framework。

当然偶也遇到过几次部署人员先安装了framework再安装IIS服务器的,这样的操作步骤就会导致framework不会被注册进IIS服务器里面。就是说在网站属性的ASP.NET选项卡上面不会出现下面这样的版本选择框

那我们怎么处理这样的情况呢,很简单,手动到IIS里面注册一下:

开始-->运行-->cmd-->输入C:WINDOWSMicrosoft.NETframeworkv2.0.50727aspnet_regiis.exe-i

再说一下我们公司用的系统WindowsService2003sp2,怎么看这个信息呢?

右键我的电脑-->属性就可以看到了

接下来,我们就可以开始安装了。

首先,是安装IIS

开始-->控制面板-->添加或删除程序-->打开添加/删除windows组件窗口这个打开的过程可能比较慢,系统要先自动检测一下到底装了啥东西

然后一直下一步就可以完成IIS的安装了。

安装framework没有什么好说的,双击安装文件一直下一步就可以了。

等两个软件都安装完成后,就可以通过

右击我的电脑-->管理打开计算机管理窗口

可以看到里面有一项应用程序服务器的选项,不错,就是刚才安装的那个东西。

点开它,会看到一个 Internet信息服务(IIS)管理器,就是要在这个东西里面操作,其他的不用去管。

打开,会发现有三个子菜单:

1、应用程序池

2、网站

3、Web服务扩展

什么是应用程序池?太专业了,不去管他,为了保险起见,偶每建立一个网站都要创建一个应用程序池来管理,至于这个池的配置,一切默认啦,微软都已经帮做好了。

来创建一个应用程序池:

右键应用程序池-->

然后展开这个应用程序池的菜单,就可以看到刚才新建的Test的应用程序池了。

接下来左键单击 Web服务扩展菜单打开.net2.0的扩展

接下来就可以新建一个网站了,右键网站

直接单击下一步

输入网站的名字 Test,下一步

选择端口,如果需要绑定IP和主机头,需要在这里绑定,没有需要,就不做了(打个比方,网站的访问路径是,这里的2000就是需要的端口号)

接下来要选定网站的物理路径,就是这个网站的文件到底放在了电脑的那个地方,C盘?D盘?还是哪,反正就是网站所在的文件夹的路径

选定文件夹后再点击下一步

接下来要配合网站的访问权限,由于网站需要些文件操作的功能,所以一般都把写入权限加上

单击下一步后,网站就算是创建成功了.

使用 ASP.NET来承载多个网站的优点之一是在公共语言运行库(CLR)中支持代码访问安全性,有助于对服务器应用程序进行保护。根据关于代码来源的证据(例如程序集的强名称或代码的源 URL),代码被分配到安全区域分类中。

以完全信任模式运行的应用程序仍然可以使用执行该应用程序所用的 Windows帐户(ASP.NET进程标识)通过 NTFS文件权限、数据库权限等进行约束。有关更多信息,请参见配置 ASP.NET进程标识。

通常,通过使程序集具有强名称并为该程序集添加安全策略,可以为单个程序集配置代码访问安全性。但是,许多 ASP.NET程序集是在编译页的过程中动态生成的,因此并未进行强命名,所以您必须间接地为这些程序集配置安全策略。此外,由于 ASP.NET支持非编译应用程序,因此不支持基于程序集的证据。由于 ASP.NET应用程序包含目录结构概念,因此与单独地手动配置.NET framework分别处理计算机上的每个 ASP.NET应用程序相比,根据 ASP.NET应用程序的类别配置代码访问安全性要容易得多。

对于每个应用程序,ASP.NET允许您分配一个与预定义的权限集对应的可配置信任级别。默认情况下,根据应用程序所呈现的证据为应用程序分配信任级别。若要使用低于 Full级别的权限集运行 Web应用程序,您必须使用在 ASP.NET信任级别和策略文件中定义的一种预定义信任级别来强制不完全信任策略。

您可以在应用程序的 Web.config文件中使用以下配置设置重写默认行为,并将应用程序和给定的安全策略关联起来:

复制

<location path="SampleApp" allowOverride="false">

<trust level="High"

originUrl=""/>

</location>

trust配置元素可应用于计算机级别(在这种情况下,每个 ASP.NET应用程序都在该信任级别运行),或应用于层次结构中的任何应用程序根目录(在这种情况下,信任级别应用于特定的 ASP.NET应用程序)。若要为整个站点设置策略,可以通过编辑该站点的根应用程序的 Web.config文件并指定站点的根目录作为路径位置来进行设置,如下面的示例所示:

复制

<location path="ContosoSite" allowOverride="false">

<trust level="High"

originUrl=""/>

</location>

对于受信任的站点,建议将 trust配置元素的 level属性设置为 High。对于不受信任的站点(如承载运行外部客户代码的站点的 Web服务器),建议将 trust配置元素的 level属性设置为 Medium。有关以中等信任级别运行 ASP.NET应用程序的详细说明,请参见位于 Patterns and Practices(PAG): Security Guidance for Applications(模式和做法(PAG):应用程序安全指南)上的“How To: Use Medium Trust in ASP.NET 2.0”(如何:在 ASP.NET 2.0中使用中等信任)。

若要在计算机或站点级别配置信任设置,通常在 location元素中将 allowOverride属性设置为 false,从而使各个应用程序无法指定自己的信任级别。通常在共享服务器安装中采用此设置。

下表列出了 trust配置元素的默认受支持属性。

属性

说明

受支持的值

level

指定应用程序将在其中运行的安全区域。

Full、High、Medium、Low和Minimal。

originUrl

指定允许使用 System.Net命名空间中的类进行连接访问的 URL或 URL模式。如果存在该属性,可以使用该属性来检查某些允许连接到不同网络位置的对象(如WebRequest实例)的权限。例如,可以使用网络场中服务器的主机名配置此属性,以便 ASP.NET页可以调用部署在 Web应用程序所在的网络场中的 Web服务。

格式正确的 HTTP URL,或WebPermissionAttribute支持的基于 regex的语法。

下表列出了 CLR支持的权限类型以及不同信任级别下各个权限的默认策略。

权限

完全

最低

AspNetHostingPermission

完全

最低

ConfigurationPermission

无限制

无限制

无权限

无权限

无权限

DnsPermission

无限制

无限制

无限制

无权限

无权限

EnvironmentPermission

无限制

无限制

Read:TEMP、TMP、OS、USERNAME、COMPUTERNAME

无权限

无权限

FileIOPermission

无限制

无限制

Read、Write、Append、PathDiscovery:应用程序目录

Read、PathDiscovery:应用程序目录

无权限

IsolatedStorageFilePermission

无限制

无限制

AssemblyIsolationByUser、无限制UserQuota

1 MBUserQuota(对于个别站点可能有所变化)、AssemblyIsolationByUser

无权限

PrintingPermission

无限制

DefaultPrinting

DefaultPrinting

无权限

无权限

ReflectionPermission

无限制

ReflectionEmit

无权限

无权限

无权限

RegistryPermission

无限制

无限制

无权限

无权限

无权限

SecurityPermission

无限制

Execution,Assertion,ControlPrincipal,ControlThread,RemotingConfiguration

Execution,Assertion,ControlPrincipal,ControlThread,RemotingConfiguration

Execution

Execution

SmtpPermission

无限制

Connect

Connect

无权限

无权限

SocketPermission

无限制

无限制

无权限

无权限

无权限

WebPermission

无限制

无限制

Connect(对于原始主机,如果已配置)

无权限

无权限

SqlClientPermission

无限制

无限制

无限制

无权限

无权限

事件日志

无限制

无权限

无权限

无权限

无权限

消息队列

无限制

无权限

无权限

无权限

无权限

服务控制器

无限制

无权限

无权限

无权限

无权限

性能计数器

无限制

无权限

无权限

无权限

无权限

目录服务

无限制

无权限

无权限

无权限

无权限

当某个权限级别可用但未在安全策略中显式指定时,使用 Full权限运行的应用程序可以始终使用该权限级别。对于使用较低信任级别运行的应用程序,除非通过修改安全策略显式授予它们相应的权限,否则这些应用程序将无法使用资源。

如表所示,使用 High权限集的应用程序对其应用程序目录中的文件具有读/写权限,而 Low信任应用程序对于其应用程序目录中的文件具有只读权限。因为 FileIOPermission类型依赖于物理路径(例如c:\SampleAppPath),所以 ASP.NET在策略文件中使用标记化的语句,这些标记化的语句在运行时由应用程序的相关路径信息来替换。

使用诸如 System.Net.WebRequest等类,WebPermission类型允许应用程序连接到由原始主机属性定义的网络位置。在 ASP.NET中,可以通过在给定应用程序的 trust节中提供可选的 originUrl属性,来配置此权限。originUrl属性将替换策略文件中的$OriginHost$变量,如 Web_hightrust.config文件的以下节中所示:

复制

<IPermission class="WebPermission" version="1">

<ConnectAccess>

<URI uri="$OriginHost$"/>

</ConnectAccess>

</IPermission>

【引自vstart的博客】如果你不是只在大集团公司工作过的话,你一定会有机会接触到MySQL,虽然它并不支持事务处理,存储过程,但是它提供的功能一定能满足你的大部分需求,另外,简洁的MySQL也有一些它独到的优势,在有些时候,它的速度甚至超过大型数据库。

【引自vstart的博客】如果你不是只在大集团公司工作过的话,你一定会有机会接触到MySQL,虽然它并不支持事务处理,存储过程,但是它提供的功能一定能满足你的大部分需求,另外,简洁的MySQL也有一些它独到的优势,在有些时候,它的速度甚至超过大型数据库。

那么如何在.NET中访问MySQL数据库呢?也许很多人马上会说:用OLEDB嘛,但是事实上采用.NET OleDb Data Provider并不能访问MySQL,如果你使用的话,系统会提示你:“Net Data OLE DB提供程序(System.Data.Odbc)不支持 MSDASQL提供程序(用于 Odbc驱动程序的 Microsoft OLE DB提供程序)。”,是什么原因我并不知道,按照MySQLDriverCS的作者的说法就是它被“abandoned by the owner”,呵呵,兴许还有些故事。

幸好,我们还有其它的选择,这里就要介绍两种访问MySQL数据库的办法。

使用ODBC.NET

ODBC.NET(全称ODBC.NET Data Provider)是一个免费的.NET framework附加组件,需要到微软公司的网站上去下载,下载地址为:,它需要系统已经安装MDAC 2.7或者更高版本。另外,还需要安装MySQL的ODBC驱动程序,下载地址为:,还需要在"ODBC数据源管理器"中配置一下DSN,如下图所示:

图1

在对象的设计上,ODBC.NET也跟OLEDB,SQL等一样,分别为OdbcConnection, OdbcCommand, OdbcDataAdapter,OdbcDataReader,用法也完全一样,如果你希望用ODBC.NET来代替以前的OleDb.NET Data Provider,事实上完全可以通过查找替换的办法来修改你的程序。

以下是一段代码示例:

try

{

string constr="DSN=MySQL;"+"UID=;"+"PWD=";;

conn= new OdbcConnection(constr);

conn.Open();

string query="insert into test.dbtable values10,'disksidkfsdi','asdfaf','adsfasdf')";

string tmp= null;

OdbcCommand cmd= new OdbcCommand(query, conn);

for(int i= 0; i{

cmd.ExecuteNonQuery();

}

cmd.Dispose();

conn.Close();

query="select* from test.dbtable";

OdbcCommand cmd2= newOdbcCommand(query, conn);

conn.Open();

OdbcDataReader reader= cmd2.ExecuteReader();

while(reader.Read())

{

tmp= reader[0].ToString();

tmp= reader[1].ToString();

tmp= reader[2].ToString();

tmp= reader[3].ToString();

}

conn.Close();

query="delete from test.dbtable";

OdbcCommand cmd3= newOdbcCommand(query, conn);

conn.Open();

cmd3.ExecuteNonQuery();

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

conn.Close();

}

只要是用C#写过数据库应用的人一定能知道,上面的代码执行了十万次插入数据和读取数据,最后将数据记录全部删除的操作。

使用MySQLDriverCS

可能大部分的人都不知道这个东西,MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql.NET Data Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL.NET Data Provider。使用他不需要额外的去设置ODBC数据源,基本上只要能连接到MySQL就能通过MySQLDriverCS来访问。

MySQLDriverCS是SourceForge.NET上的一个项目,不过不知道什么原因,这个网站在国内访问不到。

下面是使用MySQLDriverCS的代码示例:

和上面的那段代码几乎一模一样,所不同的是Odbc变成了MySQL,另外,需要注意的一点是Command的ExecuteReader方法在MySQLDriverCS中变成了ExecuteReaderEx,还有些细微的差别请参考附带的文档详细的介绍。

性能测试

有些读者其实已经看出来我以上写的那段代码的用意,对了,其实目的就是用来进行性能测试的。以上两段代码的执行时间分别是:ODBC.NET为24秒左右,MySQLDriverCS为17秒左右。结果并不出人意外,作为MySQL的专用数据驱动程序,MySQLDriverCS的速度大大快于ODBC.NET是在情理之中的。

总结

本文介绍了两种MySQL数据库访问的方法,同时对它们的性能做了一个简单的测试,希望能为各位读者在采用MySQL数据库开发.NET应用的时候提供一个有价值的参考。

【相关文章】

JSP连接Mysql数据库

使用Excel分析MySQL数据

异曲同工:MySQL与ASP.NET配合更强大

本文地址:http://www.tpjde.com/quote/1853.html    推平第 http://www.tpjde.com/ , 查看更多

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关行业动态
推荐行业动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2023001713号