| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > ошибка при открытии базы данных web-сервисом |
| Автор: sedoy 1.3.2008, 12:05 |
| Я создал простенький веб-сервис,который при его вызове обращается к базе данных.Когда я его с vs2005 открываю и компилирую-автоматически запускается asp.net development server и порт через который выполняется web-сервис.При этом запускается браузер (http://localhost:3867/mySrvice/Service.asmx).В этом случае web-сервис при обращении к базе данных (БД запущена на sql-сервере)отображает данные в формате xml. Вопрос: Почему,когда создаю виртуальный каталог в IIS и укзываю путь на тот же веб-сервис при его вызове в браузере (http://localhost/myService/Service.asmx)он выполняется, но вместо необходимых данных выводит сообщние об ошибке открыть базу данных? исходный код файл service.asmx : <%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %> файл App_Code/Service.cs : using System; using System.Web; using System.Data; using System.Data.SqlClient; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () {} [WebMethod] public DataSet getMyTable() { SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.DataSource = @".\sqlexpress"; sb.InitialCatalog = "Cars"; sb.IntegratedSecurity = true; SqlConnection sqlConn = new SqlConnection(sb.ConnectionString.ToString() ); SqlDataAdapter myDA =new SqlDataAdapter("Select * from Inventory", sqlConn); DataSet ds = new DataSet(); myDA.Fill(ds, "Inventory"); return ds; } } сообщение в ответе web-сервиса: System.Data.SqlClient.SqlException: Cannot open database "Cars" requested by the login. The login failed. Login failed for user 'OSNOVA\ASPNET'...и т.д. помогите разобраться почему при вызове web-сервиса с виртуального каталога отображается ошибка при открытии базы данных? что нужно сделать,чтоб ее устранить? |
| Автор: Crimp 1.3.2008, 16:58 |
| у тябя же всё есть, смотри что тебе выдаёт System.Data.SqlClient.SqlException: Cannot open database "Cars" requested by the login. The login failed. Login failed for user 'OSNOVA\ASPNET'...и т.д. ключевая фраза Login failed могу предложить вариант решения через настройку безопасности, через менеджер компьютера, переходиш в дереве в службы, далее там увидиш веб серисы, там есть вкладка безопастность. ну примерно так, иши Если это конечно то о чём я подумал. |
| Автор: sedoy 1.3.2008, 18:21 |
| Не помогло. Я думаю дело не в этом, ведь веб-сервис один и тот же - строка подключения одна и таже. С vs 2005 все работает, а с вызовом локального веб -узла данные не может открыть в БД |
| Автор: Crimp 1.3.2008, 22:46 |
| Потому что запуск из под студии и без, две большие разници, и он тебе пишет что Login failed. Ты помотрел какой тип аудентификации у тебя включён для коннета. Надо выключить анонимуса |
| Автор: sedoy 2.3.2008, 00:13 |
| Я это выставил. Зашел в свойства моего вртуального каталога --> безопасность каталога-->ананимный доступ (поставил отметку в поле анонимный доступ и поле встроенная проверка подлинности windows. ничего это не помагает. Я так понял что надо еще посмотреть в панель управления-->администрирование-->локальная политика безопасности-->локальные политики и там уже параметры безопасности и назначение прав пользователям если здесь надо еще что -то поменять, то что именно? или может в строке подключения что-то подкорректировать.Сейчас так: SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.DataSource = @".\sqlexpress"; sb.InitialCatalog = "Cars"; sb.IntegratedSecurity = true; //sb.UserID = "sa";sb.Password=""; SqlConnection sqlConn = new SqlConnection(sb.ConnectionString.ToString() ); SqlDataAdapter myDA =new SqlDataAdapter("Select * from Inventory", sqlConn); DataSet ds = new DataSet(); myDA.Fill(ds, "Inventory"); |