23

我使用 Visual Studio 2012 在 C# 中创建了一个全新的 MVC 4 应用程序。我正在尝试连接到一个全新的 SQL Server 2012(标准)实例,但我似乎无法正确设置我的连接字符串。

我的 Web.config 中的连接字符串:

  <connectionStrings>
    <add name="ConnectionStringName"
        providerName="System.Data.SqlClient"
        connectionString="Data Source=MyServerName;
                          Initial Catalog=MyDatabaseName;
                          Integrated Security=False;
                          User ID=MyUserID;Password=MyPassword;
                          MultipleActiveResultSets=True" />
  </connectionStrings>

每次我从 Visual Studio 中转到 ASP.NET 配置时,页面都会加载,但只要单击“安全”,我就会收到以下消息:

您选择的数据存储存在问题。这可能是由无效的服务器名称或凭据或权限不足引起的。这也可能是由于未启用角色管理器功能造成的。单击下面的按钮可重定向到您可以选择新数据存储的页面。

以下消息可能有助于诊断问题: 无法连接到 SQL Server 数据库。

我已经验证我的凭据是正确的(我可以使用它们通过 SQL Management Studio 进行连接)。还有什么我可以检查的吗?我难住了。

更新:

我无法从 SQL Management Studio (MSSQLSERVER) 中连接到我的默认实例,因此我重新安装了 SQL,创建了一个命名实例 (LHSQLSERVER)。现在我可以在 SQL Management Studio 中连接到该实例,但我仍然从 ASP.NET 配置中收到相同的错误。

还有一点需要注意——我运行的 aspnet_regsql 工具来自 Framework64\v4.0.30319 文件夹。如果我使用的是 .NET 4.5,这是否正确?

更新 2:

我尝试用我知道有效的远程站点(即 mysite.winhost.com)的连接字符串替换我的连接字符串,但在 ASP.NET 网站配置工具中仍然遇到相同的错误?FWIW 我也在使用 Windows 8,但我认为这并不重要。

还有什么我可以检查的吗?

更新 3:

我发现这篇文章说您不再需要用于 MVC 4 的 aspnet_regsql 工具,因此我重新运行该工具以删除所有设置,但同样没有运气。以前有人用 MVC 4 做过这个吗?

更新 4:

有关我找到的解决方案,请参阅下面的答案。

4

5 回答 5

12

如果您能够使用 Sql Management Studio 进行连接,那么我相信连接字符串肯定有问题 -

连接字符串您正在使用以下格式 -

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
User ID=myDomain\myUsername;Password=myPassword;

尝试IP Address, Port在数据源字段中使用 -

 <connectionStrings>
    <add name="ConnectionStringName"
        providerName="System.Data.SqlClient"
        connectionString="Data Source=190.190.200.100,1433;
                          Initial Catalog=MyDatabaseName;
                          Integrated Security=False;
                          User ID=MyUserID;Password=MyPassword;
                          MultipleActiveResultSets=True" />
  </connectionStrings>

或尝试其他变体 -

标准安全

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

可信连接

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

连接到 SQL Server 实例

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

参考 - http://www.connectionstrings.com/sql-server-2012

于 2012-10-21T18:38:59.587 回答
2

没有尝试使用 SQL 2012,但此连接字符串在 SQL 2008 R2 中运行良好

connectionString="Server=ServerAddress;Database=DataBaseName;User Id=Username;Password=Password;"

或者

connectionString="user id=UserName;password=Password;initial catalog=DatabaseName;data source=SQLServerIPorFQDN;Connect Timeout=30;"
于 2012-10-21T18:37:43.330 回答
2

您可能需要在配置中启用角色管理器

<roleManager enabled="true"/>
于 2012-10-21T18:40:38.653 回答
1

虽然 lhan16 的回答对我有所帮助,但如果说您需要添加的只是一个 DefaultConnection 会更简单。我从同一个地方开始,MVC 使用的数据库连接不适用于安全框架。该框架的作者从未想过您不会使用 DefaultConnection。

于 2013-01-17T02:45:00.367 回答
1

感谢大家的意见,我终于找到了解决办法。我遇到了这篇描述 VS 2012 用于 MVC 4 的新 Simple Membership 的文章。我基本上只是重新开始,创建一个新的数据库,新的 MVC 4 项目,并按照文章中的说明进行操作。果然,只是在网页上“注册”就在我的数据库中创建了表并存储了用户信息。

于 2012-10-30T03:10:44.877 回答