首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置文件命令生成App-Data文件夹和ASPNETDB.MDF

配置文件命令生成App-Data文件夹和ASPNETDB.MDF
EN

Stack Overflow用户
提问于 2014-02-07 12:56:38
回答 1查看 464关注 0票数 1

我正在迁移一个ASP.NET网站到一个新的服务器。在旧服务器上,我的数据库位于网站根目录的App_Data文件夹中。在我的新服务器上,我的数据库位于根目录之外的另一个文件夹中,所有这些都可以正常工作。

但有些奇怪的事情发生了。当我浏览网站时,突然在我的网站根目录中创建了一个App_Data文件夹,其中包含一个名为ASPNETDB.MDF的数据库。我可以删除它,但过一段时间它又出现了。

我做了一些测试和尝试,当我运行以下代码时,我发现DB正在创建:

代码语言:javascript
复制
    TestLabel.Text = Profile.MyProfileParameter.ToString();

所以我想这一定是因为被称为侧写的原因。在我的web.config中,我有以下内容:(稍微减少一点,我有更多的配置文件参数)

代码语言:javascript
复制
  <profile enabled="true">
      <properties>
        <add name="MyProfileParameter" type="Int32" defaultValue="30"/>
      </properties>
    </profile>

在我的web.config中,我有一个指向根文件夹外的数据库的连接字符串:

代码语言:javascript
复制
  <connectionStrings>
    <add name="ConnectionString" providerName="System.Data.SqlClient" 
 connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheNameOfMyDatase;Integrated Security=True;MultipleActiveResultSets=True" />
  </connectionStrings>

有人知道为什么调用profile会生成数据库吗?这不是一个真正的节目停播,但我想知道为什么会这样。

一些额外的信息:

  • 我的旧服务器有Windows 2003
  • 我的新服务器有Windows 2008 R2
  • 我的应用程序在ASP.NET 3.5中运行

解决方案:

显然,关于web.config,我还有很多需要学习的地方。

除了web.config之外,还有一个web.config继承的machine.config。在<profile>一节中的机器配置中,有以下设置:

代码语言:javascript
复制
<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>

代码语言:javascript
复制
<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

代码语言:javascript
复制
 <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给出的指示,奖金是你的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21628387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档