ASP.NET使用profile时,如何部署数据库
上文谈到在使用vwd2008中使用profile时出现连接数据库失败的错误。
问题描述如下:
在项目的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 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
解决方法:
1.
建议首先打开SQL Server Management Studio Express看看是否存在名为aspnetdb的数据库。
2.
若不存在,运行SDK下的aspnet_regsql启用向导配置生成数据库。
开始 --> Microsoft .NET Framework SDK v2.0 --> SDK 命令提示 --> 输入aspnet_regsql --> 两次下一步后,输入服务器名,要和平时访问数据库是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.现在做一个简单的例子测试一下:
在vwd2008中新建一个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。