. 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);
我终于找到我的问题了。为了节省从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,一切都很好。