ASP.NET WebSite管理工具无法访问SQL数据库

时间:2013-09-25 00:15:50

标签: asp.net sql sql-server

单击ASP.NET WebSite管理工具中的“安全”选项卡时,我一直收到以下错误。

  

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

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

  1. 创建一个新的空网站。
  2. 在名为/App_Data
  3. ASPNETDB.MDF中创建数据库
  4. 运行命令行:Aspnet_regsql.exe -A all -E -d (mywebsitepath)/App_Data/ASPNETDB.MDF
  5. 转到ASP.NET WebSite管理工具,然后单击安全选项卡。
  6. 我做错了什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

我的网站管理工具运行正常,直到我启用角色,此时我开始收到此错误。所以没有角色,我的应用程序运行正常,但启用了角色,我收到了这个错误。

如果未提供默认连接,则发现默认情况下Roles使用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 =&#34; SQLRoleManager &#34;和name =&#34; SQLRoleManager &#34; ...&GT;应该是一样的。

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

答案 2 :(得分:0)

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

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