Строка инициализации .NET 4.0 C # не соответствует Ошибка входа - PullRequest
5 голосов
/ 16 июля 2011

Я писал небольшое веб-приложение на C # .NET4.0, чтобы попытаться изучить его и привыкнуть к написанию приложений с его помощью.

Мое приложение очень простое;у него есть домашняя страница, кнопка входа в систему, которая переводит вас в форму входа, и когда вы входите в систему, вы можете перейти на страницу администратора.

Весь процесс входа в систему осуществляется через элементы управления входом .NET, и мойбаза данных была создана с помощью команды Aspnet_regsql.exe из командной строки visual studio (2010).

До сих пор я только собирал и тестировал на своем локальном компьютере, а теперь хочу попробовать и протестировать на серверес 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 проектами;DAL, BLL и само приложение.

Я искал все строки подключения, которые смог найти во всем решении, и это строки, которые у меня есть прямо сейчас:

DAL (приложение.config) (сейчас это изменилось - см. «РЕДАКТИРОВАТЬ 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) (Это изменилосьсейчас - смотрите «РЕДАКТИРОВАТЬ 2» внизу вопроса)

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

Это первый раз, когда я пытался поместить приложение C # .NET 4.0 на сервер, поэтому ядействительно понятия не имею, что я делаю неправильно.

Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ 1:

По просьбе Дана Ф.вот код участника, который я мог найти в своем файле web.config:

    <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.config, чтобы они были точно такими же, но при входе в систему все равно возникают ошибки.

Я также решил попробовать и использоватьфункция Membership.GetUser () в коде позади, просто чтобы посмотреть, сработает ли она, и для этого тоже возникает ошибка строки инициализации.

Просто для ссылки на мою строку подключения в обоих приложениях.config и web.config теперь:

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

Ответы [ 3 ]

5 голосов
/ 17 июля 2011

Ну, я наконец нашел свою проблему. Чтобы сэкономить время, пытаясь отсортировать файлы cs из файлов aspx и все другие файлы, которые вам на самом деле не нужно загружать для приложения .NET, я использовал кнопку «Build Deployment Package», которую вы отображается при щелчке правой кнопкой мыши по проекту в обозревателе решений.

Будучи новичком в .NET и Visual Studio, я не осознавал, что это фактически меняет мой файл web.config.

Я думал, что все в порядке, потому что файл web.config, который я редактировал (тот, который не был создан в пакете развертывания), имел правильную строку подключения:

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

Но строка подключения в загружаемом мной файле web.config (в пакете развертывания) была изменена на:

$(ReplacableToken_test-Web.config Connection String_0)

Я изменил это на правильную строку подключения, и теперь она работает как положено.

0 голосов
/ 17 февраля 2012

Это то, что решил для меня, когда мой файл aspx запускал команду sql в VS, но не с моего сервера IIS 7.

Я зашел на IIS `sites \ site` и щелкнул значок строки подключения.Затем я вставил свою рабочую (в VS) строку подключения для LocalSqlServer, перезапустил IIS, и все было хорошо.

0 голосов
/ 16 июля 2011

Я думаю, это может быть ваша строка подключения.Можете ли вы попробовать следующее?

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