ASP.NET 2.0使用user profile储存信息前,如何部署aspnetdb.mdf和正确建立连接

我在解决这个问题的时候走了不少弯路,现将方法总结给大家!希望不会有人想我一样,花了9个小时才弄好。

无论是SQL SERVER 2005还是SQL SERVER  EXPRESS都可能遇到这个问题。

前提:当我在项目的Web.Config文件中添加

< anonymousIdentification  enabled ="true" />
    
< profile  enabled ="true" >
      
< properties >
        
< add  name ="MyNewProperty"  allowAnonymous ="true"   />
      
</ properties >
    
</ profile >

后,如果正确,将可以通过

// code in Page1.aspx
Profile.MyNewProperty  =   " Hello " ;

//

// code in Page2.aspx
string  myProperty  =  Profile.MyNewProperty;

访问。

 问题出现:
    修改过Web.Config后,对于项目内的任何页面,调试运行时报错:
用户代码未处理   HttpException
无法连接到   SQL   Server   数据库。


直接浏览时报错:
禁止在   SQL   Server   中生成用户实例。请使用   sp_configure   'user   instances   enabled'   生成用户实例。

自己查找问题,又发现
在VS2005中任意打开一个asp.net网站-〉菜单栏 网站-〉ASP.NET   配置-〉提供程序-〉AspNetSqlProvider   测试
也出现同样的错误。
提供程序管理  
未能建立数据库连接。如果尚未创建   SQL   Server   数据库,请退出网站管理工具,使用   aspnet_regsql   命令行实用工具创建和配置数据库,然后返回到此工具以设置提供程序。

运行SDK下的aspnet_regsql启用向导配置,在出现选择服务器和数据库时(可能出现)
未能查询Sql   Server中的数据库名称的列表。
在建立与服务器的连接时出错。

 

解决方法:

1.
建议首先打开
SQL Server Management Studio Express看看是否存在名为aspnetdb的数据库。

2.
若不存在,运行SDK下的aspnet_regsql启用向导配置生成数据库。
开始 --> Microsoft .NET Framework SDK v2.0 --> SDK 命令提示 --> 输入aspnet_regsql --> 两次下一步后,输入服务器名,LQB-PC/SqlExpress,要和平时访问数据库是Data Source=后面的内容一致,默认的不含“/SqlExpress”,选好Windows身份验证后,点击下拉列表箭头能刷出来几个数据库名称,那么点击下一步,直至完成。这样,再次打开SQL Server Management Studio Express就会看到刚刚建立好的aspnetdb数据库。

3.用SQL Server Management Studio Express建立一个登录名aspnetsa。


对此用户的登陆属性中用户映射设置选中

在服务器属性页设置

在aspnetdb属性设置加添aspnetsa权限,我偷懒,就把全部权限都点了。

这样,用户就建立好了

4.接下来是还要修改连接字符串。
在系统盘:/WINDOWS/Microsoft.NET/Framework/<版本号>/CONFIG下有web.config和mechine.config两个文件,
其中会有一个文件中包含这样一段代码。

< connectionStrings >
   
< add  name ="LocalSqlServer"  connectionString ="Data Source=./SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|aspnetdb.mdf;User Instance=True"  providerName ="System.Data.SqlClient" />
</ connectionStrings >

这个连接字符串需要根据自己的情况修改,可以不采用原来的格式。这样修改下来。
" Data Source=LQB-PC/SQLEXPRESS;Initial Catalog=aspnetdb;Integrated Security=false;UID=aspnetsa;PWD=xxxxxx "

5.再次在VS2005中任意打开一个asp.net网站-〉菜单栏 网站-〉ASP.NET   配置-〉提供程序-〉AspNetSqlProvider   测试
这是应该会出现:已成功建立到数据库的连接。如果成功,恭喜你!如果不成功,回到第三步,根据错误提示修改一下aspnetsa的权限等,并且检查一下你的连接字符串是否有错。

6.现在作一个简单的例子测试一下:

在vs2005中新建一个asp.net网站,先点调试,关闭,这时项目中会有一个Web.Config文件,打开,在最后的
 </system.web>
</configuration>

的前面添加
< anonymousIdentification  enabled ="true" />
    
< profile  enabled ="true" >
      
< properties >
        
< add  name ="MyNewProperty"  allowAnonymous ="true"   />
      
</ properties >
    
</ profile >
保存。

在Default.aspx中拖入一个Label(ID:resultLabel),Button(ID:okButton),修改代码如下:
     protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  (Page.IsPostBack  ==   false )
        {
            Profile.MyNewProperty 
=   " Red " ;
        }
    }
    
protected   void  okButton_Click( object  sender, EventArgs e)
    {
        resultLabel.Text 
=  Profile.MyNewProperty;
    }

调试运行。如果不出现本文开头的两种红字的错误,那么已经配置好了,这时点击按钮在标签中会显示Red,Congratulations!


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值