结果

1)默认情况下,配置元素的 connectionStringName 属性设置为 LocalSqlServer ,据我所知,此属性引用 <中定义的连接 machine.config 文件中的/ em>元素。 结果

a)我假设这个连接字符串是指数据库 aspnetdb.mdf ?!

b)我理解 aspnetdb.mdf 用于我们不#8217; t手动创建成员资格或配置文件数据库(通过调用 aspnet_regsql ),但我仍然不知道 connectionStringName 属性设置为 LocalSqlServer 的配置元素的用途是什么?也就是说,他们何时以及为什么需要访问这个数据库?

c)如果我们通过 aspnet_regsql 手动设置成员资格数据库,那么会发生什么情况,因此请使用 aspnetdb.mdf ?配置元素如何知道我们<!>#8217;不使用 aspnetdb.mdf ,而是尝试访问我们创建的数据库?

结果

2)如果我们希望 machine.config 中的 LocalSqlServer 条目指向其他一些数据库文件,我们可以执行以下操作:

      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name=”LocalSqlServer” ...  />
      </connectionStrings>

我理解<remove>元素的目的是取消任何先前声明的具有相同名称的元素,但在上面的示例中,我们只是更改了现有连接的属性,因此 machine.config 没有<!>#8217;有两个同名的连接,为什么我们必须包含<=>元素?

结果

感谢名单

有帮助吗?

解决方案

来自MSDN上的 connectionStrings元素文章

  

包含的连接字符串   在父配置文件中   继承,除非明确的元素是   在子配置文件中使用。   以下默认值   connectionStrings元素是   在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>

因此,如果未修改配置文件的该部分,它将自动拥有该连接字符串。

其他提示

使用的约定是可以选择完成相同任务的众多惯例之一,但当时在MS团队的ASP.NET团队中的人真的是唯一可以说<!>的人。 <!>为什么QUOT;使用了那套公约。我的理解是,当前配置的目的是让初学者尽可能容易上手。即运行一些向导,使用预先配置的设置自动生成数据库,拖放一些安全控件,它们可以使用。由于这是专为初学者设计的,因此更有经验的开发人员遇到了您现在遇到的同一组问题,因为深入研究这些部分如何组合在一起并不简单。

您在machine.config中会注意到的一件事是,所有提供程序(Membership,Roles,Profile等)都使用此LocalSqlServer连接字符串名称,该名称再次支持初学者方案。因此,要使用您自己的数据库,您需要删除LocalSqlServer的默认定义并定义您自己的数据库。配置文件定义中没有替换元素,因此您必须使用删除/添加序列,这是逻辑等效项。通过更改连接字符串并将其名称保留为LocalSqlServer,machine.config中的所有提供程序都会指向您的数据库。这为您提供了数据库的默认提供程序定义。

现在,如果您想自定义提供程序定义,可以将它们添加到您自己的Web.config中并更改其设置。此时,您可以将LocalSqlServer作为自定义提供程序定义的连接字符串,或者您可以创建自己的连接字符串,然后将自定义提供程序定义指向您自己的连接字符串,您将不再需要担心LocalSqlServer。如果从web.config中删除LocalSqlServer,则需要将自定义提供程序定义添加到引用数据库字符串的web.config中。

希望这有帮助,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top