Проблемы с Web.config и MySQL. - PullRequest
       31

Проблемы с Web.config и MySQL.

2 голосов
/ 26 января 2012

Короче говоря, у моей машины были проблемы, и мне пришлось ее перестраивать.Я переустановил все свое программное обеспечение и поместил резервные копии проекта обратно на машину.Я пытался решить проблемы SQL-соединения, которые я просто не могу обойти.

Поэтому, пройдя через множество изменений и ошибок, я вернул рабочую рабочую версию на свою машину.Когда я запускаю его, я получаю следующую ошибку: Сообщение об ошибке парсера: Неизвестная база данных 'p10009307_sec'

База данных известна моему инструменту SQL Workbench, и если я сбрасываю соединение базы данных на страниценастроить его, я могу подключиться.

Вопрос в том, куда он смотрит, что не может найти MySQL?Я предполагаю, что это в Webconfig, но я не вижу ничего необычного, что сделало бы localhost другим.Я сделал копию своего webconfig только с разделами, которые ссылаются на MySQL.

 `<connectionStrings>
<remove name="LocalMySqlServer" />
<add name="LocalMySqlServer" connectionString="server=localhost;password=xxxxxxxxxx;
User Id=xxxxxxxxxx;logging=True;database=xxxxxxxxxx_sec" providerName="MySql.Data.MySqlClient" />
<add name="'LocalSqlServer" connectionString="server=localhost;database=xxxxxxxxxx_CUS;
logging=True;password=xxxxxxxxxx;User Id=xxxxxxxxxxER" providerName="MySql.Data.MySqlClient" />

<remove name="LocalSqlServer" />
<add name="p10009307_cusConnectionString" connectionString="server=localhost;
User Id=xxxxxxxxxxER;password=xxxxxxxxxx;database=xxxxxxxxxx_CUS"
providerName="MySql.Data.MySqlClient" />
<add name="p10009307_cusConnectionString2" connectionString="server=localhost;
User Id=xxxxxxxxxER;password=xxxxxxxxxx;database=xxxxxxxxxx_CUS; 
SQL SERVER MODE=True" providerName="MySql.Data.MySqlClient" />

</connectionStrings>

<system.data>
   <DbProviderFactories>
     <add name="MySQL Data Provider" invariant="MySQL.Data.MySqlClient" 
     description=".Net Framework Data Provider for MySQL"
     type="MySQL.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
     Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>
<system.web>
    <customErrors mode="Off" />
    <compilation targetFramework="4.0" debug="true">
    <assemblies>
        <add assembly="MySql.Data, Version=6.4.4.0, Culture=neutral,
        PublicKeyToken=c5687fc88969c44d" />
    </assemblies>
    </compilation>
    <authorization>
        <allow roles="Admin" />
    </authorization>
    <authentication mode="Forms">
       <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>
    <membership defaultProvider="MySQLMembershipProvider">
      <providers>
          <clear />
              <remove name="MySQLMembershipProvider" />
              <add name="MySQLMembershipProvider"
              type="MySql.Web.Security.MySQLMembershipProvider, 
              MySql.Web, Version=6.4.4.0, Culture=neutral, 
              PublicKeyToken=c5687fc88969c44d" applicationName="/" 
              description="Membership Provider" 
              connectionStringName="LocalMySqlServer" 
              writeExceptionsToEventLog="True" 
              autogenerateschema="True" 
              enablePasswordRetrieval="False" 
              enablePasswordReset="True" 
              requiresQuestionAndAnswer="False" 
              requiresUniqueEmail="False" passwordFormat="Clear" 
              maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
              minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10"
              passwordStrengthRegularExpression="" />
      </providers>
    </membership>
<profile defaultProvider="MySQLProfileProvider">
  <providers>
    <clear />
    <remove name="MySQLProfileProvider" />
    <add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, 
    MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
    applicationName="/" description="Profile provider" 
    connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="False"
    autogenerateschema="True" />
 </providers>
</profile>
<roleManager enabled="true" defaultProvider="MySQLRoleProvider">
  <providers>
    <clear />
    <remove name="MySQLRoleProvider" />
    <add applicationName="/" description="Role Provider" connectionStringName="LocalMySqlServer"
    writeExceptionsToEventLog="True" autogenerateschema="True" name="MySQLRoleProvider"
    type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.4.4.0, Culture=neutral,
    PublicKeyToken=c5687fc88969c44d" />
 </providers>
</roleManager>
<sessionState mode="Custom" cookieless="true" regenerateExpiredSessionId="true"
customProvider="MySqlSessionStateProvider">
<providers>
    <add name="MySqlSessionStateProvider" type="MySql.Web.SessionState.MySqlSessionStateStore,
    MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
    applicationName="/" description="State Provider" connectionStringName="LocalMySqlServer"
    writeExceptionsToEventLog="True" autogenerateschema="True" />
</providers>
</sessionState></system.web>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.3.7.0" newVersion="6.4.4.0" />
  </dependentAssembly>
</assemblyBinding>
  </runtime>

</configuration>`

На этом этапе все работает локальный хост Я поместил DLL в каталог bin, я не знаю, кто яотсутствует.

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Я не вижу ничего в этом фрагменте конфигурации, который сообщает «провайдеру данных MySQL», какой из доступных коннект-строк использовать.

В коде должно быть что-то, что сообщает ему либо имя строки conn, либо значение строки conn. Примерно так:

System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString

Кроме того, ваша вторая строковая строка содержит символ одинарной кавычки прямо перед своим именем: 'LocalSqlServer

Возможно, вы случайно добавили его, и теперь строку conn нельзя найти по имени «LocalSqlServer» (если это проблема, во всяком случае).

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

Если вы хотите использовать базу данных MySQL для хранения сеанса, вы должны объявить это в Sessionstate файла web.config.Кроме того, вы должны заглянуть в файл machine.config, если установлены все провайдеры MySQL.

...