【问题标题】:ASP.NET configuration tool won't let me configure "Security" settingsASP.NET 配置工具不允许我配置“安全”设置
【发布时间】:2013-04-17 21:21:19
【问题描述】:

美好的一天!

我正在尝试从我的 .NET 4.0 (Visual Studio 2010) ASP.NET Web 应用程序中获取本地成员数据库设置。

我这样做:

1) 文件->新建->项目->“ASP.NET Web应用程序”

2) 编译应用程序。

3) 打开“ASP.NET 配置工具”,点击“安全”选项卡。

我明白了:

There is a problem with your selected data store. This can be caused by an invalid
server name or credentials, or by insufficient permission. It can also be caused by the
role manager feature not being enabled. Click the button below to be redirected to a page
where you can choose a new data store. 

The following message may help in diagnosing the problem: Could not load type 'WebApplication3.Global'. 

这是我的 web.config 文件:

 <configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="WebApplication3" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="WebApplication3"/>
      </providers>
    </profile>

    <roleManager enabled="true">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="WebApplication3" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="WebApplication3" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

我有点期待它开箱即用。我根据其他一些 stackoverflow 帖子(启用 roleManager 等)对 web.config 进行了一些更改。

我的 App_Data 目录中也没有 .mdf 文件。如果我尝试添加一个,我会得到:

我只想为我的身份验证信息使用专用的本地数据库。

有什么想法吗?

【问题讨论】:

  • 你安装了SQLEXPRESS吗?
  • The following message may help in diagnosing the problem: Could not load type 'WebApplication3.Global'. 听起来可能是加载 global.asax 文件时出现问题?
  • RE: Petar - 不,我没有安装 SQLEXPRESS。需要运行吗?这是否意味着我也必须在生产服务器上运行它?我认为您可以只使用一个本地 MDF 来读取/写入数据。我正在寻找管理身份验证(登录控制等)的最简单方法,这看起来可能符合要求。
  • IIRC,你需要 SQLEXPRESS 来运行 mdf 文件。
  • 您需要安装某种数据访问技术。它不必是 Sql Server Express。如果你只想要一个本地数据库,一个更好的选择可能是 Sql Server LocalDB(它仍然说 express,但它不是真的)msdn.microsoft.com/en-us/library/hh510202.aspx

标签: asp.net


【解决方案1】:

你可以试试SQL Server Compact edition。它的目标是更小更容易与您的 asp.net Web 应用程序一起分发。

【讨论】:

  • 看我上面的评论,在大多数情况下,SQL Server LocalDB 比 CE 更好,因为它提供了 SQL Server 的所有标准功能,而没有客户端/服务器方面。 SQL CE 具有部分功能。
  • 我同意@MystereMan 在很多情况下都是如此,但如果他只需要数据库来保存身份验证信息,那么 LocalDB 不会太多吗? LocalDb(32Mb 下载/160 MB 磁盘)比 SQL CE(2.5/12)大很多。这里有一个很好的比较:erikej.blogspot.com/2011/01/…
【解决方案2】:

如果您收到此错误,请尝试检查这些内容。

1。确保您的数据库引擎配置为接受远程连接

• 开始 > 所有程序 > SQL Server“版本”> 配置工具 > SQL Server 外围应用配置
• 单击服务和连接的外围应用配置
• 选择有问题的实例 > 数据库引擎 > 远程连接
• 启用本地和远程连接
• 重启实例

2。检查 SQL Server 服务帐户

• 如果您没有将域帐户用作服务帐户(例如,如果您使用的是 NETWORK SERVICE),则可能需要先切换此帐户,然后再继续

3。如果您使用的是命名 SQL Server 实例,请确保您在 ASweb P.NET 应用程序的连接字符串中使用该实例名称

• 通常指定数据库服务器所需的格式是机器名\实例名
• 检查您的连接字符串

<connectionStrings>
<add name="SampleConnectionString" connectionString="Data Source=machinename\instancename;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Min Pool Size=5;Max Pool Size=60;Connect Timeout=30″ providerName="System.Data.SqlClient"/>
</connectionStrings>


4。您可能需要在防火墙上为您正在使用的 SQL Server 实例和端口创建一个例外

• 开始 > 运行 > Firewall.cpl
• 单击例外选项卡
• 添加 sqlservr.exe(通常位于 C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin,检查您安装的实际文件夹路径)和端口(默认为 1433)
• 检查您的连接字符串

5。如果您使用的是命名 SQL Server 实例,请确保您在连接字符串中使用该实例名称

6.检查SQLBrowser;检查它是否正在运行。您可能还需要在防火墙中为 SQLBrowser 创建一个例外。

7。检查您是否已连接到 SQL Server。

注意您使用什么来连接:机器名、域名或 IP 地址?检查连接时使用它。例如,如果您使用 myserver

• 开始 > 运行 > cmd
•netstat -ano| findstr 1433
•telnet myserver 1433
•ping -a 我的服务器

检查正在返回的 IP 地址是哪些端口。

如果您仍然无法获得任何连接,您可能需要在服务器上创建一个 SQL 帐户,在相关数据库上创建一个相应的 SQL 用户,然后在您的 Web 应用程序中使用此用户名/密码组合。

参考7 things to check to resolve “A network-related or instance-specific error occurred while establishing a connection to SQL Server…”

【讨论】:

    【解决方案3】:

    您使用的会员服务提供商已过时。您想使用新的ASP.NET Universal Providers

    无论哪种方式,您都需要至少安装 SQL Express 才能对其进行测试。

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 2011-08-17
      • 2012-03-02
      • 1970-01-01
      相关资源
      最近更新 更多