[Q&A]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面?
2013-09-09 18:09
429 查看
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/30/mvc4_vs2012_login_member_db.aspx
因为写书过程中也遇见了,不能解。
就发信请微软技术支持团队帮忙
隔了很久,他们很热心地追踪这个问题,也一直来电讨论、报告进度。
希望这份问与答,对大家有帮助。
让这份信息分享出来,能发挥更多力量。
==================================================================================
问题定义:
使用Win 7 + VS 2012 Ultimate (Update 2版) + SQL 2012 Express(SP1),选取ASP.NET MVC 4 专案(Project),完整专案(不是「空」专案)。
点选上方「专案」Menu =>「 ASP.NET组态」,设定Login会员数据库。
在「 ASP.NET组态」网页画面上,加入账号、群组(角色)之后,
[问题一]:我发现项目的/bin目录下,竟然出现旧版的ASPNETDB.MDF数据库档案。
而非 Web.config文件里面,预设的联机字符串(应该使用SQL 2012 Express版的LocalDB才对)。理论上,应该是aspnet-WebSite3-20130507194034.mdf档案。
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WebSite3-20130507194034;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebSite3-20130507194034.mdf" />
</connectionStrings>
[问题二]:此时,我按下上方的绿色三角按钮(Play)建构专案。
预设的ASP.NET MVC 4项目,执行成果(网页右上方)会有「注册」功能。
我注册一个新的账号以后,很奇怪的!这个账号却会跑进SQL 2012 LocalDB里面。也就是aspnet-WebSite3-20130507194034.mdf。
综合上面两个问题,我在同一个MVC 4「项目」里面,产生的 Login会员数据,
却分别存于/bin目录下「两套」数据库里面。
似乎不合理。
....................................................................
我自己测试:
(1). 打开一个「网站」,ASP.NET MVC4的网站,就不会有这样的错误了。也就是错误只发生在「项目」里面。
(2).在「项目」里面,即使我设定了 C:\Windows\Microsoft.NET目录下的 aspnet_regsql.exe,输入SQL 2012的LocalDB连结字符串(如(LocalDb)\v11.0),仍无法把上面(问题一)的Login数据库导回SQL 2012 LocalDB里面,一样会出现「项目」的 /bin目录下--两套数据库档案,分别存放不同的登入账号。
因为MVC 4项目太大,无法上传给您参考。
我并没有撰写新的程序代码,只是「新增」一个MVC 4项目,就发现问题了。VB / C#两种语法都测试过。
P.S. 从VS 2012 、Update 1~3版都有一样的情况。
==================================================================================
问题分析:
因为Visual Studio 2012在安装的时候,会将LocalDB的功能也一同安装进去,让在没有安装SQL Express 2012的环境也能使用这个功能。
另外,ASP.NET Configuration开启的是C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles底下的网站:
他会读取C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config里面的连接字符串设定:
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
这个部分和MVC4项目web.config使用的连接字符串是不同的:
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcApplication2-20130517155009;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcApplication2-20130517155009.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
这是导致项目底下出现 旧版aspnetdb.mdf的主因。
[Q&A]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面?
原本是在MSDN论坛上看见的问题因为写书过程中也遇见了,不能解。
就发信请微软技术支持团队帮忙
隔了很久,他们很热心地追踪这个问题,也一直来电讨论、报告进度。
希望这份问与答,对大家有帮助。
让这份信息分享出来,能发挥更多力量。
==================================================================================
问题定义:
使用Win 7 + VS 2012 Ultimate (Update 2版) + SQL 2012 Express(SP1),选取ASP.NET MVC 4 专案(Project),完整专案(不是「空」专案)。
点选上方「专案」Menu =>「 ASP.NET组态」,设定Login会员数据库。
在「 ASP.NET组态」网页画面上,加入账号、群组(角色)之后,
[问题一]:我发现项目的/bin目录下,竟然出现旧版的ASPNETDB.MDF数据库档案。
而非 Web.config文件里面,预设的联机字符串(应该使用SQL 2012 Express版的LocalDB才对)。理论上,应该是aspnet-WebSite3-20130507194034.mdf档案。
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WebSite3-20130507194034;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebSite3-20130507194034.mdf" />
</connectionStrings>
[问题二]:此时,我按下上方的绿色三角按钮(Play)建构专案。
预设的ASP.NET MVC 4项目,执行成果(网页右上方)会有「注册」功能。
我注册一个新的账号以后,很奇怪的!这个账号却会跑进SQL 2012 LocalDB里面。也就是aspnet-WebSite3-20130507194034.mdf。
综合上面两个问题,我在同一个MVC 4「项目」里面,产生的 Login会员数据,
却分别存于/bin目录下「两套」数据库里面。
似乎不合理。
....................................................................
我自己测试:
(1). 打开一个「网站」,ASP.NET MVC4的网站,就不会有这样的错误了。也就是错误只发生在「项目」里面。
(2).在「项目」里面,即使我设定了 C:\Windows\Microsoft.NET目录下的 aspnet_regsql.exe,输入SQL 2012的LocalDB连结字符串(如(LocalDb)\v11.0),仍无法把上面(问题一)的Login数据库导回SQL 2012 LocalDB里面,一样会出现「项目」的 /bin目录下--两套数据库档案,分别存放不同的登入账号。
因为MVC 4项目太大,无法上传给您参考。
我并没有撰写新的程序代码,只是「新增」一个MVC 4项目,就发现问题了。VB / C#两种语法都测试过。
P.S. 从VS 2012 、Update 1~3版都有一样的情况。
==================================================================================
问题分析:
因为Visual Studio 2012在安装的时候,会将LocalDB的功能也一同安装进去,让在没有安装SQL Express 2012的环境也能使用这个功能。
另外,ASP.NET Configuration开启的是C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles底下的网站:
他会读取C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config里面的连接字符串设定:
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
这个部分和MVC4项目web.config使用的连接字符串是不同的:
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcApplication2-20130517155009;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcApplication2-20130517155009.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
这是导致项目底下出现 旧版aspnetdb.mdf的主因。
相关文章推荐
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- VS 2012打开提示 未能将网站×××配置为使用 ASP.NET 4.5 和 尚未在Web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5
- VS 2012 如何发布 ASP.NET 网站到本地IIS
- 解决ASP.NET连接Oraclei数据库出现"无法加载DLL(oci.dll)"异常
- VS2012 asp.net开发之“IIS配置网站”
- vs.net C# 连接数据库 出现错误 用户 '(null)' 登录失败。原因: 未与信任 SQL Server 连接相关联
- 发布asp.net 2.0 网站,出现"分析器错误信息: 发现不明确的匹配"
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- VS2013新建asp.net空网站项目失败,配置IISexpress失败,未能找到web服务器“http://localhost”解决方案
- [置顶] ASP.NET+IIS+Access发布网站出现HTTP 错误 404.0 - Not Found
- asp.net中,在客户端,加入<%=....%>代码时出现的问题解决方法
- ASP & ASP.NET 网站性能设计之Cache动态使用
- vs2012 打开ASP.net Web Site Administration Tool
- 安装IIS及与SQL2012展示ASP.Net网站
- "VS.NET Web服务器运行的不是ASP.NET 1.1 版"的解决办法
- VS.Net 2008里面直接编辑SharePoint 2007网站
- vs .net 2005 打开VSS项目时出现:"could not find the visual sourcesafe internet web service connection"的解决方案
- Asp.Net 小型网站的制作(一),涵盖了asp.net里面所有的基础知识
- ASP.net出现“访问IIS元数据库失败”解决方法是什么?