我正在迁移一个ASP.NET网站到一个新的服务器。在旧服务器上,我的数据库位于网站根目录的App_Data文件夹中。在我的新服务器上,我的数据库位于根目录之外的另一个文件夹中,所有这些都可以正常工作。
但有些奇怪的事情发生了。当我浏览网站时,突然在我的网站根目录中创建了一个App_Data文件夹,其中包含一个名为ASPNETDB.MDF的数据库。我可以删除它,但过一段时间它又出现了。
我做了一些测试和尝试,当我运行以下代码时,我发现DB正在创建:
TestLabel.Text = Profile.MyProfileParameter.ToString();所以我想这一定是因为被称为侧写的原因。在我的web.config中,我有以下内容:(稍微减少一点,我有更多的配置文件参数)
<profile enabled="true">
<properties>
<add name="MyProfileParameter" type="Int32" defaultValue="30"/>
</properties>
</profile>在我的web.config中,我有一个指向根文件夹外的数据库的连接字符串:
<connectionStrings>
<add name="ConnectionString" providerName="System.Data.SqlClient"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheNameOfMyDatase;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>有人知道为什么调用profile会生成数据库吗?这不是一个真正的节目停播,但我想知道为什么会这样。
一些额外的信息:
解决方案:
显然,关于web.config,我还有很多需要学习的地方。
除了web.config之外,还有一个web.config继承的machine.config。在<profile>一节中的机器配置中,有以下设置:
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</profile>可以在web.config中重写此设置。
首先(我认为这并不是必要的),我通过向我的localSqlServer添加一个明确的命令,从连接字符串中删除了这个<connectionStrings>:
<connectionStrings>
<!-- clear command removes localSqlServer from machine.config -->
<clear />
<add name="ConnectionString" providerName="System.Data.SqlClient"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheNameOfMyDatase;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>如果我现在运行我的站点,您会发现一个错误,说明找不到连接名'LocalSqlServer‘。
因此,我向<profile>部分添加了一个新的提供程序,并将其指向我的ConnectionString
<profile enabled="true">
<providers>
<!-- clear command removes localSqlServer from machine.config -->
<clear/>
<add name="AspNetSqlProfileProvider" connectionStringName="ConnectionString" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>现在一切都很好,不再有任何突然出现的数据库。
感谢ijaz给出的指示,奖金是你的!
发布于 2014-02-11 14:51:05
AspNetdb是Asp.Net成员资格提供程序或其他应用程序服务(如“概要文件、角色/权限”等)使用的数据库,生成的.mdf文件是数据库(SQL2005Express)。
当您在ASP.NET中使用标准的sql提供程序时,它将存储在您的配置文件、成员身份或角色中的信息。App_Data是此数据库的默认位置,但可以更改它。试着查找和更新web.config文件as,<membership> <providers> </providers> </membership>部分的详细信息,请看下面的帖子。http://forums.asp.net/t/1517995.aspx
https://stackoverflow.com/questions/21628387
复制相似问题