【问题标题】:ASP.NET WebSite Administration Tool can't access SQL databaseASP.NET 网站管理工具无法访问 SQL 数据库
【发布时间】:2013-09-30 09:52:26
【问题描述】:

单击 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 网站管理工具并单击安全选项卡。

我做错了什么?

【问题讨论】:

  • 您是否在 web.config 中配置了会员资格和会员资格提供商?
  • 那行得通。非常感谢。
  • 太棒了。我添加了与答案相同的信息以帮助他人。如果你愿意接受它。

标签: asp.net sql sql-server


【解决方案1】:

您需要在您的网站 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

【讨论】:

    【解决方案2】:

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

    在我启用角色之前,我的网站管理工具运行良好,此时我开始收到此错误。因此,如果没有角色,我的应用程序可以正常工作,但启用角色后,我会收到此错误。

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

    This Microsoft help page 准确地展示了如何为角色设置默认连接。

    <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 的答案(上图)是正确的。这只是我遇到的额外问题。

    【讨论】:

      【解决方案3】:

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

      链接:Role based authentication in the new MVC 4 Internet template using simplemembership

      【讨论】:

        猜你喜欢
        • 2011-03-17
        • 2010-11-29
        • 2013-06-27
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 2013-03-26
        相关资源
        最近更新 更多