Лучший отвечающий
Локальный вариант сайта ASP.Net WebApplication с SQL Server работает, а удаленный нет?

Вопрос
-
Я новичок по работе с Visual Studio 2008, Visual Web Developer , создал project ASP.Net WebApplication пример работы с базой данных SQL Server. После опубликования проекта (Publish) локальный вариант сайта работает, а удаленный нет. Мне кажется, что надо опубликовать БД или я ошибаюсь. Одним словом, как и что надо сделать?
Заранее благодарю.
21 апреля 2010 г. 9:41
Ответы
-
В процессе разработки обычно используется локальный SQL Server и соответственно когда публикуешь сайт на хостинг надо перенести свою базу данных. Войдите на локальный SQL Server при помощи SQL Server Management Studio , раскройте папку Databases, и на интересующей вас базе данных через правый клик мыши Tasks -> Back Up, В низу можно будет заметить путь куда будет положен файл бекапа
На вкладке Options так же рекомендую выставить Overwrite all existing backup sets и Verify backup when finished
После нажатия OK в указаном месте появится файл бекапа, который можно восстановить на хостинге.
Ну и еще надо будет переписать все connection string в файле web.config чтоб он указывал на sql server хостинга и выставить логин и пароль который предоставил хостинг для доступа к бд.
Additional:
Если вы используете файл базы данных, который просто находится в папке App_Data то вам может помочь следующий connection string:
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|MyDB.mdf;Integrated Security=True
естественно при условии что на хосте стоит SqlExpress server
- Изменено Megano 21 апреля 2010 г. 16:34 Add additional
- Помечено в качестве ответа I.Vorontsov 22 апреля 2010 г. 7:25
21 апреля 2010 г. 10:27 -
Если публикация на внешний, как справедливо указано Megano, надо и БД переносить. В общем-то все верно. Просто варианты публикации могут быть разные. Суть в том, что по умолчанию IIS заточен на SQLExpress. Хостеры его затачивают по-разному, но при этом предоставляют возможность апгрейда БД. А если это свой IIS, его надо конфигурировать - добавлять SQLProvider в web.config, можно вручную, лучше утилитами.
- Предложено в качестве ответа ovaaariru 30 апреля 2010 г. 0:11
- Помечено в качестве ответа I.Vorontsov 30 апреля 2010 г. 6:11
30 апреля 2010 г. 0:10
Все ответы
-
В процессе разработки обычно используется локальный SQL Server и соответственно когда публикуешь сайт на хостинг надо перенести свою базу данных. Войдите на локальный SQL Server при помощи SQL Server Management Studio , раскройте папку Databases, и на интересующей вас базе данных через правый клик мыши Tasks -> Back Up, В низу можно будет заметить путь куда будет положен файл бекапа
На вкладке Options так же рекомендую выставить Overwrite all existing backup sets и Verify backup when finished
После нажатия OK в указаном месте появится файл бекапа, который можно восстановить на хостинге.
Ну и еще надо будет переписать все connection string в файле web.config чтоб он указывал на sql server хостинга и выставить логин и пароль который предоставил хостинг для доступа к бд.
Additional:
Если вы используете файл базы данных, который просто находится в папке App_Data то вам может помочь следующий connection string:
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|MyDB.mdf;Integrated Security=True
естественно при условии что на хосте стоит SqlExpress server
- Изменено Megano 21 апреля 2010 г. 16:34 Add additional
- Помечено в качестве ответа I.Vorontsov 22 апреля 2010 г. 7:25
21 апреля 2010 г. 10:27 -
Если публикация на внешний, как справедливо указано Megano, надо и БД переносить. В общем-то все верно. Просто варианты публикации могут быть разные. Суть в том, что по умолчанию IIS заточен на SQLExpress. Хостеры его затачивают по-разному, но при этом предоставляют возможность апгрейда БД. А если это свой IIS, его надо конфигурировать - добавлять SQLProvider в web.config, можно вручную, лучше утилитами.
- Предложено в качестве ответа ovaaariru 30 апреля 2010 г. 0:11
- Помечено в качестве ответа I.Vorontsov 30 апреля 2010 г. 6:11
30 апреля 2010 г. 0:10 -
Спасибо!
А как можно добавить SQLProvider в web.config, средствами VS 2008 или чем другим, но не в ручную.
с уважением,
Васил.
P.S. Публикация БД из фолдера App_Data произведена в рамках проекта Web application под управлением VS 2008.
На удаленном сервере получаю следующее сообщение:
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'VASIL\ASPNET'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SqlException (0x80131904): Login failed for user 'VASIL\ASPNET'.] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4846887 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
Server Error in '/Test1/Site3' Application.
Login failed for user 'VASIL\ASPNET'.
17 мая 2010 г. 7:03 -
Полагаю, что Вы уже решили проблему, но тем не менее.
Вряд ли Вы получите удовлетворительный конкретный ответ на вопрос, слишком разные могут быть условия.
Вот смотрите, общая идеология такова. Ваше локальное веб-приложение (ВП) заточено на Ваш же локальный экспресс сиквел. Все разрешения по умолчанию даны, включая разрешения для аспа. Это означает, что любое локальное приложение идет на локальный сиквел от имени аспа, поэтому у Вас все работает. Дальше, например, Вы переносите ВП на свой же, но удаленный локальный сервер. Тогда, если Вы перенесете и БД на экспресс-сиквел удаленного ИИСа все по-прежнему будет работать. Другой вариант, поскольку это Ваш, пусть и удаленный ИИС, Вы настраиваете в ИИСе свой локальный экспресс-сиквел в SQLпровайдере - это настройки ИИСа. Диспетчером ИИСа. В общем варианты разные, перехожу к наиболее вероятному наугад, поскольку Вы это не конкретизировали.
Вы публикуетесь на стороннем хостере. Сомнительно, хотя и возможно, что хостер открыл доступ всем подряд веб-приложениям на свой сиквел. Совсем невероятно, чтобы он открыл доступ на свой экспресс-сиквел. Но вот SQLпровайдер у него скорее всего на свой большой сиквел, скорее всего отстроен. Вы же, напротив, этого сделать не сможете. Честно говоря, не помню точно, конфигурируется ли web.config при публикации автоматом, скорее всего, опционально.
Резюме : Из Вашего поста ясно, что SQL-сервер, указанный в SQLProvider удаленного веб-сервера, не пускает к себе Ваше опубликованное приложение. Этот вопрос надо задать администратору удаленного веб- сервера. Вариантов ответов также может быть много. Надеюсь общая картина стала яснее.
Удачи.
28 июня 2010 г. 9:42