. net 4.0 c#初始化字符串不符合登录错误

本文关键字:不符合 登录 错误 字符串 初始化 net | 更新日期: 2023-09-27 18:02:21

我一直在用c# . net 4.0编写一个小型web应用程序,试图了解它并习惯使用它编写应用程序。

我的应用程序很简单;它有一个主页,一个登录按钮,带你到登录表单,当你登录时,你可以去到一个管理页面。

整个登录过程是通过。net登录控件完成的,我的数据库是通过visual studio命令提示符(2010)使用Aspnet_regsql.exe命令创建的。

到目前为止,我只在我的本地机器上构建和测试,现在我想在使用IIS7的服务器上尝试和测试。

我已经在IIS7中正确设置了站点,并且我可以构建和上传站点而没有任何问题-也就是说-直到我尝试登录。我在本地机器上使用的SQL版本是2008 R2,而服务器上使用的SQL版本是普通的2008。因此,我不能只是备份本地数据库并将其恢复为服务器上的SQL,所以我生成脚本,并使用这些脚本在服务器上创建数据库。

现在,当我尝试登录到服务器上的站点时,我得到以下错误:

Format of the initialization string does not conform to specification starting at index 0.

在尝试在互联网上寻找解决方案后,我发现它可能只是我的连接字符串有问题,所以我尝试将它们更改为各种不同的东西,但没有成功。

我在visual studio的应用程序是一个解决方案与3个项目;a DAL、BLL和应用程序本身。

我查找了在整个解决方案中可以找到的所有连接字符串,这些是我现在拥有的字符串:

木豆(app.config)(现在已更改-请参阅问题底部的"EDIT 2")

<add name="DAL.Properties.Settings.APPNAMEConnectionString"
   connectionString="Data Source=localhost;Initial Catalog=(DATABASE NAME);uid=(USER ID);pwd=(PASSWORD)"
   providerName="System.Data.SqlClient" />

应用程序(web . config)(现在已更改-请参阅问题底部的"EDIT 2")

<add name="LocalSqlServer" connectionString="server=localhost;database=(DATABASE NAME);uid=(USER ID);pwd=(PASSWORD)"/>

这是我第一次尝试将c# . net 4.0应用程序放到服务器上,所以我真的不知道我做错了什么。

任何帮助都将非常感激!

编辑1:

应Dan F的要求,这是我可以在我的网站上找到的会员代码。配置文件:

    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
            connectionStringName="LocalSqlServer"
            applicationName="/APPNAME"
            enablePasswordRetrieval="false"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="true"
            passwordFormat="Hashed"
            maxInvalidPasswordAttempts="5"
            minRequiredPasswordLength="5"
            minRequiredNonalphanumericCharacters="0"
            passwordAttemptWindow="10"
            passwordStrengthRegularExpression=""/>
        </providers>
    </membership>
    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/APPNAME" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
    </profile>
    <roleManager enabled="true">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/APPNAME" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            <add name="AspNetWindowsTokenRoleProvider" applicationName="/APPNAME" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
    </roleManager>

编辑2:我刚刚测试了使用DAL从aspnet_regsql.exe生成的成员表中获取用户列表,它工作得很好。因此,我将连接字符串从DAL app.config复制到应用程序web。配置,使它们完全相同,但我仍然得到错误时,试图登录。

我还决定在后面的代码中尝试使用Membership.GetUser()函数,看看它是否可以工作,并且它也会出现相同的初始化字符串错误。

只是为了参考我的连接字符串在app.config和web。

Data Source=.;Initial Catalog=(DATABASE);User Id=(USERID);Password=(PASSWORD);

. net 4.0 c#初始化字符串不符合登录错误

我终于找到我的问题了。为了节省从aspx文件和所有其他你不需要为。net应用程序上传的文件中整理cs文件的时间,我一直在使用"构建部署包"按钮,当你在解决方案资源管理器中右键单击你的项目时,你可以看到这个按钮。

作为。net和Visual Studio的新手,我没有意识到这实际上正在改变我的web。配置文件。

我以为一切都很好,因为网络。我正在编辑的配置文件(没有在部署包中生成的文件)具有正确的连接字符串:

Data Source=.;Initial Catalog=(DATABASE);User Id=(USERID);Password=(PASSWORD);

而是网络中的连接字符串。我正在上传的配置文件(部署包中的配置文件)已更改为:

$(ReplacableToken_test-Web.config Connection String_0)

我将其更改为正确的连接字符串,现在它按预期工作。

我想可能是你的连接字符串。你能试试下面的方法吗?

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

当我的aspx文件在VS中运行sql命令而不是从我的IIS 7服务器时,这就是为我解决的问题。

我进入IIS ' sites ' site ',点击连接字符串图标。然后,我把我知道的工作(在VS)连接字符串LocalSqlServer,重新启动IIS,一切都很好。