Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetPropertyValue期间CreateUserWizard出错:无法连接到SQL Server数据库_C#_Asp.net_Sql Server_Asp.net Profiles_Createuserwizard - Fatal编程技术网

C# SetPropertyValue期间CreateUserWizard出错:无法连接到SQL Server数据库

C# SetPropertyValue期间CreateUserWizard出错:无法连接到SQL Server数据库,c#,asp.net,sql-server,asp.net-profiles,createuserwizard,C#,Asp.net,Sql Server,Asp.net Profiles,Createuserwizard,我有一个ASP.NET应用程序,它通常可以连接数据库,可以使用CreateUserWizard创建用户,但在用户配置文件更新期间开始使用我坚持使用的配置文件,例外情况如下: [SqlException(0x80131904):用户“我的电脑\用户”登录失败。] [HttpException(0x80004005):无法连接到SQL Server数据库。] 我确信以下各项: 连接字符串正常,应用程序可以访问数据库 如果我不想更新他们的配置文件,则在数据库中使用CreateUserWizard创建用

我有一个ASP.NET应用程序,它通常可以连接数据库,可以使用CreateUserWizard创建用户,但在用户配置文件更新期间开始使用我坚持使用的配置文件,例外情况如下:

[SqlException(0x80131904):用户“我的电脑\用户”登录失败。]
[HttpException(0x80004005):无法连接到SQL Server数据库。]

我确信以下各项:

  • 连接字符串正常,应用程序可以访问数据库
  • 如果我不想更新他们的配置文件,则在数据库中使用CreateUserWizard创建用户,不会出现错误
  • 仅当我想调用
    this.SetPropertyValue(“FirstName”,value)时一切都出错,下面显示错误:

    SQLExpress数据库文件自动创建错误:

    连接字符串使用应用程序的App_数据目录中的数据库位置指定本地Sql Server Express实例。提供程序试图自动创建应用程序服务数据库,因为提供程序确定该数据库不存在。要成功检查application services数据库是否存在并自动创建application services数据库,必须满足以下配置要求:

    如果应用程序在Windows 7或Windows Server 2008R2上运行,则需要执行特殊的配置步骤以启用提供程序数据库的自动创建。有关其他信息,请访问:。如果应用程序的App_数据目录不存在,则web服务器帐户必须具有对应用程序目录的读写访问权限。这是必要的,因为如果App_数据目录不存在,web服务器帐户将自动创建该目录

    如果应用程序的App_数据目录已存在,则web服务器帐户只需要对应用程序的App_数据目录进行读写访问。这是必需的,因为web服务器帐户将尝试验证Sql server Express数据库是否已存在于应用程序的App_数据目录中。从web服务器帐户撤消对App_数据目录的读取访问将阻止提供程序正确确定Sql server Express数据库是否已存在。当提供程序尝试创建现有数据库的副本时,这将导致错误。由于在创建新数据库时使用web服务器帐户的凭据,因此需要具有写访问权限

    必须在计算机上安装Sql Server Express。
    web服务器帐户的进程标识必须具有本地用户配置文件。有关如何为计算机帐户和域帐户创建本地用户配置文件的详细信息,请参阅自述文件

    下面是
    web.config

    <configuration>
      <connectionStrings>
        <add name="MUQ_SMSConnectionString" 
             connectionString="Data Source=MY-PC\SQLEXPRESS12SP1;Initial Catalog=MyDB;" 
             providerName="System.Data.SqlClient;Integrated Security=True"/>
      </connectionStrings>
      ............
    </configuration>
    
    以下是配置文件的定义和默认提供程序的覆盖:

    <membership defaultProvider="MySqlProvider" >
          <providers>
            <add name="MySqlProvider"
                 type="System.Web.Security.SqlMembershipProvider"
                 applicationName="/"
                 connectionStringName="MUQ_SMSConnectionString"
                  requiresUniqueEmail="False"
                 requiresQuestionAndAnswer="false" />
          </providers>
        </membership>
        <anonymousIdentification enabled="true" />
    
        <profile enabled="true">
          <properties>
            <add name="MobileNumber" type="string" allowAnonymous="true"/>
            <add name="FirstName" type="string" allowAnonymous="true"/>
            <add name="LastName" type="string" allowAnonymous="true"/>
            <add name="Gender" type="string" allowAnonymous="true"/>
          </properties>
        </profile>
        <roleManager enabled="true"/>
    
    
    
    注意:我有另一个问题,我怀疑它可能与此错误有关。当我想在应用程序的“管理”面板中编辑应用程序的安全选项时,SQL Server会崩溃,并在windows中报告错误


    目前我正在Windows 8.1上使用SQL Server 2012SP1 Express。我安装了SQL Server 2008 R2 Express,然后安装了2012 Express,但没有任何更改。

    当您使用AspDotNetProfile提供程序而未在web.config文件中提供提供提供程序配置时,您使用的是machine.config文件中的提供程序配置。以下是与.NET 4.0一起分发的默认machine.config文件的示例:

        <profile>
            <providers>
                <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </profile>
    
    
    
    此定义中引用的连接字符串也可以在machine.config中找到:

    <connectionStrings>
        <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    
    
    
    从您的问题中可以看出,您尚未覆盖web.config中的默认配置文件定义。因此,配置文件提供程序正在本地计算机上查找名为SQLEXPRESS的SQL Server Express实例。原因是必须是Express实例,因为只有Express版本才支持用户实例(有关AttachDBFilename,请参阅文档)

    因此,您有两个选择: 1.覆盖默认的提供程序配置。这可以通过删除默认配置并重新添加具有相同名称的配置来完成。
    2.在web服务器上设置具有默认实例名称的SQL Server Express实例。

    如果使用AspDotNetProfile提供程序而未在web.config文件中提供提供提供程序配置,则使用machine.config文件中的提供程序配置。以下是与.NET 4.0一起分发的默认machine.config文件的示例:

        <profile>
            <providers>
                <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </profile>
    
    
    
    此定义中引用的连接字符串也可以在machine.config中找到:

    <connectionStrings>
        <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    
    
    
    从您的问题中可以看出,您尚未覆盖web.config中的默认配置文件定义。因此,配置文件提供程序正在本地计算机上查找名为SQLEXPRESS的SQL Server Express实例。原因是必须是Express实例,因为只有Express版本才支持用户实例(有关AttachDBFilename,请参阅文档)

    因此,您有两个选择: 1.覆盖默认的提供程序配置。这可以通过删除默认配置并重新添加具有相同名称的配置来完成。
    2.在web服务器上设置具有默认实例名称的SQL Server Express实例。

    如果使用AspDotNetProfile提供程序而未在web.config文件中提供提供提供程序配置,则使用machine.config文件中的提供程序配置。以下是与.NET 4.0一起分发的默认machine.config文件的示例:

        <profile>
            <providers>
                <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </profile>