web.config и членство - PullRequest
       17

web.config и членство

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

У меня ошибка Runtime, когда я пытаюсь выполнить действие при входе в систему или создать действие пользователя на опубликованном веб-сайте.

У меня есть файл ASPNETDB.MDF в папке appData, созданный из конфигурации ASP.NET. Я создал новую базу данных на хостинге, экспортированную из ASPNETDB.MDF в новую базу данных. Я изменил строку подключения. Локально он отлично работает, даже с новой строкой подключения, но после публикации у меня появляется ошибка времени выполнения.

Я использую контроль входа в систему asp и CreateUserWizard. Кстати, я создал несколько GridView и SqlDataSource, чтобы показать всех пользователей, и это работает .. Но вход в систему и createWizard - нет.

web.config

<configuration>
  <connectionStrings>
    <add name="ConnectionString" connectionString="Server=mssql3322.dotnet-host.com;Database=aspnetdb3;Uid=SomeUserNAme;Password=SomePassword;"  providerName="System.Data.SqlClient"/>  
  </connectionStrings>
   <system.web>    
      <roleManager enabled="true" />
      <authentication mode="Forms" />
      <compilation debug="false" targetFramework="4.0" />     
    </system.web>

</configuration>

Кстати, я пытался добавить поставщика членства в web.config, и он не работал даже локально))

UPD:

ошибка При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)

1 Ответ

1 голос
/ 04 февраля 2012

Хорошо, для начала вы можете добавить следующее в ваш файл web.config:

<configuration>
  <system.web>
    <customErrors mode="off"></customErrors>
  </system.web>
</configuration>

Это должно позволить вам получить более подробное сообщение об ошибке о том, что не так.Посмотри, получишь ли ты, что начал по правильному пути.По крайней мере, он должен предоставить больше информации о том, что может быть не так.

Обновление - попробуйте это в вашем web.config:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="Server=mssql3322.dotnet-host.com;Database=aspnetdb3;Uid=SomeUserNAme;Password=SomePassword;"  providerName="System.Data.SqlClient"/>
    <add name="ConnectionString" connectionString="Server=mssql3322.dotnet-host.com;Database=aspnetdb3;Uid=SomeUserNAme;Password=SomePassword;"  providerName="System.Data.SqlClient"/>
</connectionStrings>

Обновление - Это сработало!Вот краткое объяснение, почему: по умолчанию классы членства ASP используют строку подключения LocalSqlServer .Причина, по которой код работал на вашем локальном компьютере, заключается в том, что соединение LocalSqlServer определено в файле конфигурации на уровне компьютера, чтобы указывать на локальную базу данных sql.Когда вы его опубликовали, SqlDataSource / GridView работал, потому что он тянул соединение с именем ConnectionString , которое указывало на правильный сервер.Однако членство в ASP все еще пыталось подключиться к соединению LocalSqlServer .Приведенная выше конфигурация просто игнорирует соединение уровня машины LocalSqlServer и определяет его собственное (и оставляет на месте ConnectionString , чтобы GridView продолжал функционировать).

...