jackyrong

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  884 Posts :: 2 Stories :: 992 Comments :: 57 Trackbacks

公告

搜索

 

常用链接

我参与的团队

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

在asp.net 2.0中,提供了各类的provider,有membership,role,profile等的,可以很方便地实现如角色,用户等管理,甚至不用自己写代码了。而在vs.net 2005中,默认的各类的provider是使用sql express的,有的时候,如果想使用sql sever 2000或者sql server 2005,那应该怎么办呢?下面举例子说明:
  首先,要正确使用 provider,我们要到C:\WINNT\Microsoft.NET\Framework\v2.0.50215下,运行一个
叫aspnet_regsql的工具,之后按照其步骤设置就可以了,最后会产生一个叫aspnetdb的数据库。
  接着,到C:\WINNT\Microsoft.NET\Framework\v2.0.50215\config下,打开machine.config文件,
找到如下的代码:
 <membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
注意,这里定义了membership这个provider的一些属性了,比如对密码输入的要求,对注册提示问题的要求等等,其中,留意下connectionStringName="LoacalSqlserver"这个,再查找localsqlserver,会找到如下的代码
  <connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
  </connectionStrings>
看到了吧,要改为你的sql server 2000或者sql server 2005的话,就在这里改了。
  又或者可以在web.config里改也可以的
 <connectionStrings>
<add name="MySqlProviderConnection" connectionString="server=localhost;integrated security = true;Initial Catalog=aspnetdb" />
</connectionStrings>

<system.web>
<membership defaultProvider="MySqlMembershipProvider">
<providers>
<add connectionStringName="MySqlProviderConnection" name="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
</system.web>
  其他的如profile,role等provider,修改的方法也是一样的。


0
0
(请您对文章做出评价)
« 上一篇:一些好的PHP工具
» 下一篇:搞笑的asp.net 2密码问题
posted on 2005-09-02 10:47 jackyrong的世界 阅读(6383) 评论(26)  编辑 收藏 网摘 所属分类: .NET

Feedback

#1楼 2005-09-02 15:48 POLARIS      
我曾经看过一个应用程序,其将ASPNETDB.mdf文件放在应用程序的App_Data文件夹中,当应用程序执行时,应用程序修改了该文件夹中的这个数据库文件。不知道这个时候,系统是否会同时修改系统中原有的那个ASPNETDB.mdf文件呢?如果是,那么是不是说同时修改两个文件。可是这样做有什么意义呢?注意:从AttachFileName属性而言,是指定的应用程序目录下的ASPNETDB.mdf文件。
另外,如果系统没有安装SQL Express,那么应用程序是无法正常运行的。这是不是说SQL Server 2000不能够直接使用ASPNETDB.mdf文件呢?如果可以,那么连接字符串应用如何设置呢?

你在代码中写到:
<add name="MySqlProviderConnection" connectionString="server=localhost;integrated security = true;Initial Catalog=aspnetdb" />
这时候是不是在SQL Server 2000中已经导入了aspnetdb.mdf文件了?

  回复  引用  查看    

#2楼[楼主] 2005-09-02 20:27 jackyrong的世界      
必须先用aspnet_regsql工具,产生aspnetdb这个数据库先的。
  回复  引用  查看    

#3楼 2005-09-03 10:54 POLARIS      
您说的我是明白的,使用aspnet_regsql命令行工具的目的之一是在sql server 2000中创建aspnetdb数据库。
但是,这并没有回答我的问题啊。我这两天在尝试各种办法,印证我提出的问题。希望您也加入,把这个问题弄清楚,好吗?

  回复  引用  查看    

#4楼[楼主] 2005-09-03 19:09 jackyrong的世界      
SQL SERVER 2000和2005都可以设置的。首先先用aspnet_regsql产生aspnetdb这个数据库(假如你产生在sql servrer 2000下),之后,必须修改machine.config或者
web.config文件,按上面的方法实现,。其实aspnet_regsql的时候,就已经产生了
aspnetdb.mdf这个文件的了。
当然,应用程序修改数据库时,aspnetdb.mdf文件表的内容肯定改变的拉,你打开来看下就知道了
SQL 2000下,这样修改
<connectionStrings>
<!-- <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />-->
<add name="LocalSqlServer" connectionString="Data Source=LIAO;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password=xxxxx"/>
</connectionStrings>

  回复  引用  查看    

#5楼 2005-09-05 11:17 POLARIS      
你的想法很好,我也是很赞成的。也许是我有些钻牛角。我还是有些问题,希望和你共同探讨。
你所列出的<connectionStrings>配置节是在系统文件夹中的machine.config文件的内容,然后对其修改。我想这样是很麻烦的,这个我们都知道。我想请教的是,如何在应用程序的web.config文件中修改连接字符串。同时,还不用修改machine.config文件中的配置。我试验了,好像是不行。因为,machine.config文件中的很多地方都使用了LocalSqlServer,因此,这个名称是不可变化的。那么,也许就在web.config无法实现设置了。你觉得呢?
另外,User Instance=true是什么意义,我查了一会没有查到。我想这个配置的意义也许是很重要的。

  回复  引用  查看    

#6楼[楼主] 2005-09-06 08:21 jackyrong的世界      
可以在web.config里单独设置的,但要先remove,比如这样
<providers>
<remove name="AspNetSqlProfileProvider" />
<add name="AspNetSqlProfileProvider" ....................................>

  回复  引用  查看    

#7楼 2005-09-07 10:23 POLARIS      
我都忘记了,还有<remove>和<clear />节可以使用呢。
看了看以上所有我们之间的讨论,发现自己前面的一些问题甚至是很可笑的。
感谢你对我的帮助,我已经基本了解了相关的配置和使用方法了。
这几天在写一些Profile的东西,感到挺有意思的。

  回复  引用  查看    

#8楼[楼主] 2005-09-07 18:26 jackyrong的世界      
good,希望多交流,偶是大菜鸟一只,希望多指点呀
  回复  引用  查看    

#9楼 2005-09-25 20:34 bluebird[未注册用户]
(1)首先sqlserver2000中建立数据库(MyDB)
(2)执行aspnet_regsql.exe, 在选择表时,选你建立的表(MyDB)
(3)完成
(4)修改你的站点配置web.config
<connectionStrings>
<add name="MYDBConn" connectionString="server=(local);trusted_connection=false;user id=sa;pwd=123;database=pjDB" providerName="System.Data.SqlClient"/>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="server=(local);trusted_connection=false;user id=sa;pwd=;database=pjDB" providerName="System.Data.SqlClient" />
</connectionStrings>

<membership defaultProvider="MySqlMembershipProvider">

  回复  引用    

asp.net 2.0 越来越简单了
  回复  引用    

#11楼 2005-10-04 17:30 felix[未注册用户]
小弟是个初学者,那位帮忙指点一下,下面有什么错误?总是说providers中connectionStringName 没有声明??怎么回事?按道理说我在proveiders中添加连接时,应该提示这个参数的,可是没有这个参数提示,怎么回事呢?谢了先

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<membership defaultProvider="MySqlMembershipProvider">
<providers >
<add name ="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MySqlProviderConnection"></add>
</providers>
</membership>
</system.web>

<connectionStrings >
<add name="MySqlProviderConnection" connectionString="server=home;trusted_connection=false;user ID=sa;pwd=****;database=aspnetdb" providerName ="system.data.sqlclient" />
</connectionStrings>
</configuration>


  回复  引用    

#12楼 2005-11-29 16:10 tonado[未注册用户]
nen
  回复  引用    

#13楼 2005-11-29 16:13 tonado[未注册用户]
能不能说的详细一点啊,我是vs2005+sql server 2000
想用一下登陆控件,搞了n天都没搞好
能不能只修改应用程序下面原来的web.config就搞定啊,不敢去搞系统盘里的machine.config 和web.config怕出问题
谢谢~~~~~~~~~~~~~~~~~~~~~~~~
救命啊~~~~~~~~~~~~~~~~~~~~~~~~

  回复  引用    

#14楼 2005-12-05 19:55 nonoboy[未注册用户]
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Data Source=主机;Initial Catalog=数据库名;Persist Security Info=True;User ID=sa;Password=xxxxx"
providerName="System.Data.SqlClient" />
</connectionStrings>

  回复  引用    

#15楼 2005-12-05 20:12 nonoboy[未注册用户]

针对菜菜鸟,不知道参数配置的傻瓜又绝对安全正确的做法

1:用aspnet_regsql.exe生成自定义名称的数据库
2:在VS.net2005的服务器资源管理器创建刚才生成的数据库连接
3:随便拉一个表到空白页上,马上删除它(作用是暂时在web.config生成连接配置)
4:进入IIS对应虚拟目录的属性、Asp.net配置项,General下会发现有两个连接,第一个是系统默认的,第二个就是刚才拖拉生成的,将第二个的值拷贝,再粘贴到第一默认值上取代它。最后删除第二个连接。

大功告成!!


  回复  引用    

#16楼[楼主] 2005-12-06 08:17 jackyrong的世界      
你的方法也是可行的,恭喜你
  回复  引用  查看    

#17楼 2005-12-09 15:37 Tunny[未注册用户]
我想问一下,如果系统用oracle数据库,该如何实现这些呢?还要生成一个aspnet数据库吗?
请哪位高手做过的回答一下?
谢谢

  回复  引用    

#18楼 2006-03-28 11:35 胜竹[未注册用户]
谢谢,我已经试验成功了!同时想给你添加一条建议:密码最短长度为 7,其中必须包含以下非字母数字字符: 1(Password length minimum: 7. Non-alphanumeric characters required: 1. ) 这一项如果也能添加进去的话,会更完美,我想你一定知道怎么修改的这两项。再次谢谢你!
  回复  引用    

我试过你们说得所有办法了,可是aspnet_Roles表可以插入数据(能创建角色),能不能添加新用户。
  回复  引用    

#20楼 2006-06-17 17:39 随意[未注册用户]
可以使用roles.addusertoroles()
  回复  引用    

#21楼 2006-07-24 13:56 aspnetx      
@Tunny

已经有针对oracle的provider了
包括access等很多种数据库都有
并且provider的接口已经公开了
你可以自己写,只不过很麻烦

  回复  引用  查看    

我想问一下,这样改了后,原来的那些用户的登陆,注册控件还能用么?
  回复  引用    

看了最上面的时间,看来我现在才看ASP.NET2.0真觉得好晚了啊。这几天一直都在搞成员管理这块,好像觉得ASP.NET2.0只要这块搞懂了其他的都不是太复杂了。我是菜鸟,不知说的对不对。
  回复  引用    

@POLARIS
kkkkkkkkkkkkk

  回复  引用    

#25楼 2007-11-02 15:46 aacc[未注册用户]
当您与 User Instance 设置为 true 的连接字符串进行连接时,SQL Server Express 版只允许有单个连接连到 .mdf 文件
  回复  引用    

#26楼 2009-08-27 16:04 不错[未注册用户]
不错的东西
  回复  引用