2009-08-17 2 views
0

Я закончил создание своего веб-приложения C#/SQL в VS 2008 на XP Pro OS. Он строит и выполняет успешно. Используя тот же код, я разработал веб-сайт в VS 2008. Хотя этот веб-сайт успешно строится и выполняется, когда я его развертываю с моего компьютера, он не отображает сетку данных. Я думаю, это связано с тем, что у пользователя Интернета нет доступа к моей базе данных SQL.Как настроить гостевой доступ к веб-сайту?

Итак, я прочитал о настройке SQL-хранилищ, доверенных учетных записей против олицетворения и т. Д. Но у меня все еще нет хорошей справки по всему этому. Я пробовал как анонимный доступ с входами пользователей пользователей, указанными в свойствах веб-сайта IIS, так и отключением анонимного доступа. Я использую тот же компьютер для размещения веб-сайта (IIS), хранения SQL Server и баз данных и хранения VS 2008.

Теперь я хочу, чтобы этот сайт работал в Интернете. Он разрешает текущую страницу, и все появляется за исключением этого gridview, который позволяет пользователю выбирать таблицу из моей базы данных Adventureworks, к которой они хотят добавить. Я заметил, что из окна IIS6 Manager появляется то же изображение, что и в Интернете. И я использую Интегрированный вместо учетной записи Windows. Я использую IIS 5.1 с процессом aspnet_wp.exe по умолчанию.

Вы можете просмотреть его по следующему адресу:

http://sqlmagic.net/Default.aspx

Какой тип аутентификации и доступа пользователя вы рекомендуете для меня, чтобы дать минимальный, но достаточный доступ к интернет-пользователей для добавления новых данных существующие таблицы в моей базе данных? И есть ли у вас URL-адреса, которые вы могли бы мне порекомендовать, чтобы посмотреть на это? Я googled и читаю много URL-адресов, но я не нашел много полезных для ОС XP.

Кроме того, у меня есть следующая строка соединения в моем файле web.config:

<add name="***" connectionString="Data Source=.;AttachDbFilename=&quot;C:\Program Files\Microsoft SQL Server\***\DATA\AdventureWorks_Data.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=False" 
    providerName="System.Data.SqlClient" /> 

Правильно ли это или мне нужно «ID пользователя» и «Пароль»? И сейчас у меня есть режим аутентификации = Windows. Должны ли это быть Формы или что-то еще?

Теперь я избавился от ошибки аудита отказа от диспетчера событий. Тем не менее, GridView по-прежнему не отображается по указанному выше URL-адресу. Прямо сейчас я использую IUSR_ в качестве анонимного имени пользователя. Это правильная учетная запись?

Теперь GridView отображается в диспетчере IIS6, но не в этом URL-адресе. Поскольку я больше не получаю ошибок в диспетчере событий, как я могу диагностировать причину отсутствия GridView? Кроме того, почему на этом веб-сайте так долго заканчивается загрузка на мой URL-адрес веб-сайта, но только одна секунда при просмотре его из диспетчера IIS?

+2

Для вашей же выгоды, даже если в этом нет критических данных, * НИКОГДА * * НИКОГДА не публикуйте свою «строку подключения» публично. –

+0

Я не знал, что это опасно. Поскольку в этой строке нет пароля, как это может позволить кому-то взломать? – salvationishere

+0

Он просто предоставляет информацию, которая может быть полезна, если кто-то нацелился на вас; и это хорошая практика никогда не делать этого. –

ответ

2

Использование интегрированной системы безопасности означает, что соединения с SQL Server создаются с помощью идентификатора пользователя, под которым выполняется процесс запроса. В этом случае IIS работает под управлением IIS.

Он работает в VS 2008, потому что вы используете сервер отладки и, как таковой, он подключается как вы. Когда вы публикуете в IIS, он работает как непривилегированная системная учетная запись - или она должна быть.

Самое простое решение - отключить интегрированную защиту и создать пользователя, который может подключаться к базе данных с помощью проверки подлинности SQL Server. Альтернативное решение - определить идентификатор пользователя Windows, с которым работает IIS, и разрешить этому пользователю возможность подключаться к базе данных с наименьшим количеством привилегий.

И вопрос «Режим аутентификации» не имеет отношения к подключению к SQL Server, если вы не выполняете олицетворение. Олицетворение позволяет рабочему потоку IIS работать как пользователь, делающий веб-запрос. Так как вы не делаете олицетворения, это спорный вопрос.

+0

Очень полезный ответ, Энди. Да, я хочу отключить интегрированную систему безопасности. Итак, нужно ли вместо этого выбирать проверку подлинности Windows? И затем я создаю нового пользователя входа и предоставляю ему доступ для чтения/записи к этой базе данных? Я не хочу использовать олицетворение; Я бы предпочел использовать доверенные. Хотя ваш ответ указывает мне в определенном направлении, не могли бы вы предоставить мне более подробную информацию о том, какие элементы/элементы нужно изменить? – salvationishere

+0

Аутентификация Windows и аутентификация форм не имеют НИЧЕГО сделать доступ к вашей базе данных. Если вы собираетесь использовать доверенные, то вам необходимо предоставить пользователю, под которым рабочие процессы IIS запускают доступ к вашей базе данных. См. Http://blogs.iis.net/davcox/archive/2009/08/12/what-is-my-iis-code-running-as.aspx, и я надеюсь, что ваша болевая толерантность высока. Когда вы определите личность, создайте логин для этого пользователя в своей базе данных. Может потребоваться загрузить SQL Server Management Studio Express, если вы не можете сделать это в VS. Извините, но у меня нет подходящей среды для разработчиков. – andymeadows

+0

Спасибо за эти ссылки, Энди. Поэтому, если вы скажете, что аутентификация не имеет никакого отношения к доступу к базе данных, то какие причины являются причиной? И чтобы исправить описание моей проблемы, я фактически использую IIS 5.1 с процессом aspnet_wp.exe по умолчанию. – salvationishere

1

Когда я пытался понять эти понятия, мне было полезно помнить, что это не пользователь веб-приложения, которое соединяется с базой данных, это процесс веб-приложения, работающий под IIS.

Когда пользователь аутентифицируется в веб-приложении, это означает, что приложение понимает, кто является пользователем.

Когда пользователь выполняет что-либо, требующее доступа к базе данных, процесс IIS соединяется с БД, он может либо подключаться как пользователь ASPNET, либо вы можете попросить его выдавать себя за другую учетную запись.

Лично я предпочитаю создать учетную запись пользователя специально для задачи подключения к БД, а затем установить IIS для олицетворения этой учетной записи. Я думаю, что это предпочтительнее предоставить пользователю ASPNET доступ к базе данных.

+0

Мне нравится, что ты говоришь. В настоящее время я правильно работаю над своим сайтом в IIS, но не в Интернете. И никаких проверок отказов в журнале событий нет. Вы знаете, почему это было бы? И почему так долго загружается из веб-браузера? – salvationishere

Смежные вопросы