Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: IIS и ASMX  (Прочитано 13915 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Maria_Sh
Новенький

ru
Offline Offline

« : 11-12-2010 21:23 » 

Здравствуйте! Помогите пожалуйста решить следующую проблему: создала WebService в Visual Studio 2008. Из VS сервис в браузере открывается. Но непосредственно из браузера я WebService открыть не могу. В адресной строке пишу http://localhost/WebServiceMaria/WebServiceMaria/service1.asmx - "Не удается найти требуемую страницу"...  IIS версия 5.1. Обычные файлы html IIS обрабатывает, а asmx почему-то не хочет.. 

Добавлено через 3 часа, 47 минут и 56 секунд:
Service1.asmx все-таки открылся... Зато появилась еще одна проблема - при обращении одного из веб-методов к базе даннх браузер отображает следующую страницу:

Добавлено через 3 минуты и 45 секунд:
Подскажите, почему может возникать такая проблема?

* 1.JPG (193.15 Кб - загружено 1137 раз.)
« Последнее редактирование: 12-12-2010 01:10 от Maria_Sh » Записан
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #1 : 12-12-2010 08:26 » 

Похоже, что в базу сервис пытается щимиться от локальной учетной записи HOME-186AB2957A\ASPNET, в то время как доступ к базе разрешен только от виндовой учетки. База MS SQL?
Попробуй добавить новую учетную запись с аутентификацией через MS SQL и в сервисе явно заходи под этой учеткой.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 12-12-2010 13:51 » 

В Web.config сервиса задать строку соединения с базой данных, прописав там логин и пароль доступа к серверу. Использовать Windows-аутентификацию не так просто, поскольку IIS запускает сервис под служебной учётной записью, а в VS сервис работает под учётной записью текущего пользователя. В принципе можно сменить учётную запись, под которой исполняется сервис на IIS - либо в конфигурации веб-приложения, либо в конфигурации пула приложений в IIS.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Maria_Sh
Новенький

ru
Offline Offline

« Ответ #3 : 12-12-2010 19:12 » 

Спасибо большое за советы - щас попробую.. Отпишусь о результатах!!)

Добавлено через 2 часа, 41 минуту и 18 секунд:
Ой, что-то я запуталась совсем... Я с SQL server недавно начала работать.. Очень боюсь что-нибудь неправильно прописать или наисправлять..

Вот может такая подробная информация пригодится:

Создала виртуальную машину с ОС Windows XP - единственный пользователь - он же администратор. Туда установила NET.Framework, IIS. Затем поставила SQL Server 2005. Оставила предложенный SQL-ем server name HOME-186AB2957A , выбрала Windows Authentication (и как я поняла - зря? Нужно было выбирать SQL Server Authentication?? ) затем установила Visual Studio 2008. В SQL Server база данных, в VS - веб-сервис в директорию сервера IIS C:\InetPub\wwwroot. Браузер открывает веб-службу, но не может подсоединиться к базам.. 

То есть HOME-186AB2957A\ASPNET - сервер для SQL-servera, он же user? Вы написали что юзер HOME-186AB2957A\ASPNET не имеет доступа к базе? А он не является виндовой учеткой? Я совсем запуталась....)

Я открыла WEB.config из папки C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer - но там не увидела ничего про соединения с базой..  Или самой прописывать все нужно?
« Последнее редактирование: 12-12-2010 21:53 от Maria_Sh » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 13-12-2010 12:25 » 

Цитата: Maria_Sh
Оставила предложенный SQL-ем server name HOME-186AB2957A
Тебе это имя потом придётся писать в настройках. По-моему такие имена неудобны для запоминания.

Цитата: Maria_Sh
выбрала Windows Authentication (и как я поняла - зря? Нужно было выбирать SQL Server Authentication?? )
В твоём случае скорее всего зря - было бы гораздо удобнее использовать логин и пароль SQL Server для доступа к нему, нежели ковыряться в учётных записях веб-приложения.

Цитата: Maria_Sh
То есть HOME-186AB2957A\ASPNET - сервер для SQL-servera, он же user? Вы написали что юзер HOME-186AB2957A\ASPNET не имеет доступа к базе? А он не является виндовой учеткой? Я совсем запуталась....)
Локальная учётная запись ASPNET обычно присутствует на машинах, где установлена поддержка ASP.NET в IIS. Чтобы она получила доступ к базе, ей нужно дать доступ в настройках SQL Server.

Автоматически имеет доступ к базам, например, Administrator, но чтобы этим воспользоваться, нужно настроить веб-приложение в IIS таким образом, чтобы оно работало под этой учётной записью.

Каким путём идти - дело твоё, я бы посоветовал первый (из соображений безопасности). А ещё лучше завести специально созданную для твоего приложения учётную запись, и настроить работу с ней как SQL Server, так и IIS.

Цитата: Maria_Sh
Я открыла WEB.config из папки C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer - но там не увидела ничего про соединения с базой..  Или самой прописывать все нужно?
Самой. Либо вручную (если знаешь как), либо через VS (например, поместить на форму сервиса объект соединение с базой и выполнить настройки), либо посредством ADO (создать udl-файл и скопировать сгенерированную строку соединения из него).

Думаю, самым простым способом будет второй - через VS.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Maria_Sh
Новенький

ru
Offline Offline

« Ответ #5 : 13-12-2010 12:51 » 

Dimka,  подскажи пожалуйста, а как дать учетной записи HOME-186AB2957A\ASPNET доступ к базе? Я думаю, для меня это самый простой вариант..  Проект тестовый, поэтому безопасность не главное) Главное чтобы просто заработало..)   Доступ к базе этой учетной записи я должна прописывать как раз в WEB.config (C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer)
Что именно я должна там писать?
Или где можно посмотерть примеры?
Записан
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #6 : 13-12-2010 13:14 » new

1. Зайти в SQL Server Managment Studio.
2. Выбрать Security -> Login -> New Login. your_login
3. Выбрать SQL Server authentification
4. Снять выделения со всех опций Enforce password policy..
5. В Default Database выбрать вашу базу данных

6. Выбрать вашу БД -> Security -> Users. Установить Role Member в db_owner

Затем, в строке соединения с БД указать этот логин и пароль. Где строка соединения с БД у вас определяется? в коде или в Web.config
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 13-12-2010 13:47 » 

Цитата: Maria-Sh
Dimka,  подскажи пожалуйста, а как дать учетной записи HOME-186AB2957A\ASPNET доступ к базе?

yudjin, читай выше - у неё выключена SQL Server authentication.

1) Зайти в SQL Server Management Studio
2) Подключиться к серверу.
3) В дереве выбрать папку Security/Logins.
4) Правой кнопкой мыши кликнуть на эту папку и в меню выбрать New Login.
5) Убедится, что выбрана Windows Authentication.
6) Рядом с полем Login Name нажать кнопку Search.
7) Там ввести имя ASPNET и нажать кнопку Check Names - выберется правильное имя, после чего нажать OK.
8 ) В Default Database выбрать нужную базу данных.
9) Перейти на вкладку User Mapping.
10) Поставить галочку на нужной базе данных.
11) Внизу в таблице ролей поставить галочку на роли db_owner (это даёт полные права на работу с базой, включая создания и удаления таблиц, хранимых процедур и т.п.).
12) Нажать OK.

Этим действием будет разрешено подключение пользователей от учётной записи ASPNET к SQL Server (создан login сервера) и работа с базой данных (создан user базы данных, и ему дана роль "хозяина" базы данных).

Цитата: Maria_Sh
Доступ к базе этой учетной записи я должна прописывать как раз в WEB.config (C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer)
Что именно я должна там писать?
Или где можно посмотерть примеры?
Reporing Services тут вроде бы ни причём... Web.config должен лежать в той же папке, где на диске лежит asmx-файл сервиса.

Насчёт примеров - непонятно. Пример того, как выглядит строка соединения? Не знаю, чем это поможет... Там будут через точку с запятой перечислены названия параметров подключения "равно" их значения. Я рекомендовал создать подключение к базе на форме сервиса, перетащив на неё соответствующий ASP.NET-компонент.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Maria_Sh
Новенький

ru
Offline Offline

« Ответ #8 : 13-12-2010 13:53 » 

Спасибо огромное!!!!!!)))))

Зашла как сказали в в SQL сервере в Security - Logins. Решила посмотреть настройки пользователя HOME-186AB2957A\ASPNET заодно.. Была отключена роль db_owner.. Включила - перезагрузилась.. Заработало!!!!!!!!!!!! ))))))))))))))))))   Улыбаюсь

Dimka, yudjin, спасибо ОГРОМНОЕ что не оставили в беде, выручили меня очень!!!!!!!!!!!!!!!!!!)))))))))))))
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines