鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > vs2010 > >

[QA]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号

来源:互联网 作者:佚名 时间:2013-10-24 09:32
[QA]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面? 原文出處 [QA]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面? 原本是在MSDN论坛上看见的问题 因为写书过

[Q&A]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面?

原文出處  

[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 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 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>

     </connectionStrings>

 

这个部分和MVC4项目web.config使用的连接字符串是不同的:

     <connectionStrings>

                <add 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的主因。

 

posted on

网友评论
<