【问题标题】:Unable to connect to SQL Server database in ASP.NET Web Admin Tool无法在 ASP.NET Web 管理工具中连接到 SQL Server 数据库
【发布时间】:2017-07-31 19:01:33
【问题描述】:

正如标题所说,我正在尝试为我正在制作的网站制作一些角色。

每当我进入安全标签时,标题中的错误就会显示出来。

为此,我使用 aspnet_regsql 向导配置了一个数据库。创建数据库成功,但我仍然收到错误。

这是目前的 webconfig

<?xml version="1.0"?>
<configuration>
 <configSections>
   <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
   </sectionGroup>

 </configSections>
 <entityFramework>
  <contexts>
   <context type="ContosoUniversity.DAL.SchoolContext, ContosoUniversity">
     <databaseInitializer type="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity" />
   </context>
  </contexts>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
   <parameters>
     <parameter value="v11.0" />
   </parameters>
  </defaultConnectionFactory>
  <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
 </entityFramework>
  <connectionStrings>
    <add name="SchoolContext" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ContosoUniversity1;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

 <system.web.webPages.razor>
   <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
     <add namespace="System.Web.Mvc" />
     <add namespace="System.Web.Mvc.Ajax" />
     <add namespace="System.Web.Mvc.Html" />
     <add namespace="System.Web.Optimization"/>
     <add namespace="System.Web.Routing" />
     <add namespace="TESTMVC" />
    </namespaces>
  </pages>
 </system.web.webPages.razor>


 <system.webServer>
  <handlers>
   <remove name="BlockViewHandler"/>
   <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  </handlers>
 </system.webServer>

  <system.web>
   <compilation>
    <assemblies>
     <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
   </compilation>

 </system.web>
</configuration>

我知道我可能在这个 xml 中遗漏了一些 会员标签? 谁能帮我修复 webconfig 文件?

此连接字符串用于显示此数据库中某些内容的页面。在此保存 (localdb)\MSSQLLocalDB 我有由向导 aspnet_regsql 制作的 aspnetdb。

<connectionStrings>
  <add name="SchoolContext" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ContosoUniversity1;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>

【问题讨论】:

  • 为什么要使用使用aspnet_regsql 创建的ASP.NET Membership?它已经很老了,微软已经用新的替换了好几次了。
  • @Win 这是我在他们的网站上能找到的最好的。有什么建议吗?

标签: c# sql asp.net database asp.net-membership


【解决方案1】:

根据您的评论,您是 ASP.NET Membership 的新手。您提到的 ASP.Net 会员资格已超过 10 至 15 岁。在那些年里,微软几乎没有取代它。

这是历史 -

  1. ASP.Net Membership Provider(使用 aspnet_regsql 生成表)
  2. ASP.NET 通用提供程序
  3. 简单的会员提供者
  4. ASP.NET 身份(最新)

由于您也是 ASP.Net Membership 的新手,我个人建议使用 ASP.Net Identity。这是免费的ASP.NET MVC 5 Fundamentals course by Scott Allen

【讨论】:

  • 是的,总的来说,我是 ASP.NET 的新手。感谢您提供信息和链接。我会调查的。
【解决方案2】:

使用Integrated Security=SSPI,我相信您将使用网站运行的任何帐户连接到 SQL 服务器,可能是 apppool 身份帐户。您应该在 SQL 中创建一个用户并使用这些凭据显式连接,或者添加应用程序池身份以获得权限:

对于本地 SQL Server(来自 https://blogs.msdn.microsoft.com/ericparvin/2015/04/14/how-to-add-the-applicationpoolidentity-to-a-sql-server-login/):

  • 打开 SQL Server Management Studio (SSMS) 并连接到 SQL Server。 打开服务器级别的安全文件夹,而不是数据库的安全文件夹。
  • 右键单击登录并选择新建登录。
  • 对于登录,键入 IIS APPPOOL\AppPoolName 并不要单击搜索并选择确定(如果执行搜索,它将解析为具有 ServerName\AppPool 名称的帐户,并且 SQL 将无法解析该帐户的 SID,因为它是虚拟的)
  • 为帐户选择默认值,然后选择“确定”关闭对话框

【讨论】:

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