【发布时间】:2020-06-21 08:12:21
【问题描述】:
我正在尝试在带有 .Net 框架 4.8 的 Asp.net MVC 中使用 UserSecret。我在通过 UserSecret 访问 ConnectionString 时遇到问题,原因是我也在使用 Membership provider 和 Entityframework edmx 文件。我用来访问连接字符串的以下代码
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="Secrets" mode="Greedy" userSecretsId="b503099f-e1d9-4700-9e50-cf4081a700e3" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</builders>
</configBuilders>
<connectionStrings configBuilders="Secrets">
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="" providerName="System.Data.SqlClient" />
<add name="HIPAADbEntities" connectionString="" providerName="System.Data.EntityClient" />
</connectionStrings>
在运行应用程序时编写上述代码后,出现以下错误
这些是用 web.config 编写的代码行,它给了我错误
<membership userIsOnlineTimeWindow="120">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="true" enablePasswordReset="false" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" passwordFormat="Encrypted" maxInvalidPasswordAttempts="25" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
<add name="MyMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="true" enablePasswordReset="false" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" passwordFormat="Encrypted" maxInvalidPasswordAttempts="25" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
UserSecret文件如下
<?xml version="1.0" encoding="utf-8"?>
<root>
<secrets ver="1.0">
<secret name="LocalSqlServer" value="Data Source=.;Initial Catalog=TestDB;Integrated Security=True"></secret>
</secrets>
</root>
如何访问有权访问连接字符串的会员标签中的UserSecret?没有 UserSecrets 它工作正常。但我需要让它与 Usersecret 一起使用
【问题讨论】:
-
数据库是附加到 SQL Server 还是使用需要 mdf 文件的本地数据库?如果数据库连接到服务器,则无法使用本地数据库进行连接(服务器拥有文件)。所以连接字符串必须使用 SQL Server 名称和实例。
-
是的数据库已附加,是的,我正在使用本地数据库。如果我不使用 UserSecret 它工作正常。我只面临 UserSecret 的问题
-
什么是连接字符串(connectionStringName="LocalSqlServer")?该代码可能忽略了 localdB 的配置文件。 Windows 需要凭据,而不是用户名和密码。如果您使用 SQL Server Management Studio 登录数据库,它会在登录窗口中显示 Windows 凭据。
-
这是我的连接字符串 Data Source=.;Initial Catalog=TestDB;Integrated Security=True
-
那么你根本不需要加密连接字符串。没有理由使用另一个
UserSecret文件。使用应用程序池的 Windows 帐户建立连接
标签: c# asp.net .net asp.net-mvc asp-net-config-builders