0

当我单击 ASP.NET 网站管理工具中的安全选项卡时,我不断收到以下错误。

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

这正是我到目前为止所做的:

  1. 创建一个新的空网站。
  2. /App_Data在命名中创建一个数据库ASPNETDB.MDF
  3. 运行命令行:Aspnet_regsql.exe -A all -E -d (mywebsitepath)/App_Data/ASPNETDB.MDF
  4. 转到 ASP.NET 网站管理工具并单击安全选项卡。

我究竟做错了什么?

4

3 回答 3

4

您需要在您的网站 web.config 文件中配置成员资格提供程序。请参阅以下示例并修改配置以满足您的要求。

<configuration>
  <connectionStrings>
    <add name="MySqlConnection" connectionString="Data 
      Source=MySqlServer;Initial Catalog=aspnetdb;Integrated
      Security=SSPI;" />
  </connectionStrings>
  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add 
          name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="MySqlConnection"
          applicationName="MyApplication"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          requiresUniqueEmail="true"
          passwordFormat="Hashed" />
      </providers>
    </membership>
  </system.web>
</configuration>

有关详细信息,请参阅以下 MSDN 文章:

http://msdn.microsoft.com/en-us/library/6e9y4s5t(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/vstudio/1b9hw62f(v=vs.100).aspx

于 2013-09-26T01:41:08.227 回答
1

如果您使用的是 SQL Server 而不是 localDB,这是@codkemonkeh 答案的扩展。

在我启用角色之前,我的网站管理工具运行良好,此时我开始收到此错误。因此,没有角色,我的应用程序运行良好,但启用角色后,我收到了这个错误。

发现如果没有提供默认连接,角色默认使用 localDB sql 连接。因为在我的情况下,我将用户登录信息存储在 SQL Server(而不是 localDB)中,所以我收到了这个错误。

此 Microsoft 帮助页面准确显示了如何为角色设置默认连接。

<roleManager enabled="true" defaultProvider="SqlRoleManager">
  <providers>
    <add name="SqlRoleManager" 
         type="System.Web.Security.SqlRoleProvider"
         connectionStringName="YOUR_CONNECTION_NAME"
         applicationName="MyApplication" />
  </providers>
</roleManager>

还要注意 defaultProvider=" SQLRoleManager " 和 name=" SQLRoleManager " ...> 应该相同。

除此之外,@codemonkeh 的答案(上图)是正确的。这只是我遇到的额外问题。

于 2016-08-14T08:23:05.117 回答
0

在我的 HomeController 上使用 [InitializeSimpleMembership] 后,它解决了我的问题。当我检查 @if (User.IsInRole("Administrators")) 时“无法连接到 SQL Server 数据库”。

链接:使用 simplemembership 的新 MVC 4 Internet 模板中基于角色的身份验证

于 2017-06-14T06:25:26.417 回答