Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Безопасность IIS


Автор: Чердак 19.10.2008, 21:47
Доброе время суток.
Я создал веб-сервис, на нем написал два метода: один возвращает DataSet, второй просто string.

В настройках iis - стоит анонимный доступ. Оба метода при тестировании работают. А вот когда вызываешь их из приложения, первый метод выдает ошибку: "Login failed for user "[mashine_name]\\IUSR_ASUS", второй метод отлично работает. Скажите как настроить iis и web.config, а также клиентское приложение, что все заработало, и не использовать анонимный доступ. И где брать эти пароли и логины, которые спрашиваются при попытке зайти на http://localhost
Заранее благодарен за помощь. 

Автор: likegift 20.10.2008, 05:27
Цитата(Чердак @ 19.10.2008,  21:47)
Доброе время суток.
Я создал веб-сервис, на нем написал два метода: один возвращает DataSet, второй просто string.

В настройках iis - стоит анонимный доступ. Оба метода при тестировании работают. А вот когда вызываешь их из приложения, первый метод выдает ошибку: "Login failed for user "[mashine_name]\\IUSR_ASUS", второй метод отлично работает. Скажите как настроить iis и web.config, а также клиентское приложение, что все заработало, и не использовать анонимный доступ. И где брать эти пароли и логины, которые спрашиваются при попытке зайти на http://localhost
Заранее благодарен за помощь.

оба метода лезут в базу? или тока один? или я не понял вопроса, и базу ваще никто не юзает?

Автор: Чердак 20.10.2008, 17:47
только один метод обращается к базе за таблицей с данными - он как раз и не работает через "[mashine_name]\\IUSR_ASUS". А вот если написать не встроенное анонимное имя, у имя учетной записи, под которой я на комп захожу, то все работает.

Автор: likegift 20.10.2008, 20:36
Цитата(Чердак @ 20.10.2008,  17:47)
только один метод обращается к базе за таблицей с данными - он как раз и не работает через "[mashine_name]\\IUSR_ASUS". А вот если написать не встроенное анонимное имя, у имя учетной записи, под которой я на комп захожу, то все работает.

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

Автор: Чердак 20.10.2008, 22:42
likegift, свойство пула - это в строке connction?

Вот что у меня там:

private string ConnectionString = "Data Source=ASUS;Initial Catalog=dbINVAB;Persist Security Info=True;User ID=sa;Password=*****";

А как учетке дать прова на базу sql?

И еще такой вопрос, как занести в web.config ConnectionString  и потом считать эту страку в коде? 
Или где эту строку хранить, чтобы ее можно было редактировать не компилируя код.

Автор: likegift 21.10.2008, 16:25
Цитата(Чердак @ 20.10.2008,  22:42)
likegift, свойство пула - это в строке connction?

Вот что у меня там:

private string ConnectionString = "Data Source=ASUS;Initial Catalog=dbINVAB;Persist Security Info=True;User ID=sa;Password=*****";

А как учетке дать прова на базу sql?

И еще такой вопрос, как занести в web.config ConnectionString  и потом считать эту страку в коде? 
Или где эту строку хранить, чтобы ее можно было редактировать не компилируя код.

погляди на скрин. вот в том окне, которое открывается на моем скрине написано network service. это значит, что любое приложение и сервис которые принадлежат этому пулу будет запускать свой процесс с правами данной учетки . если ты ничего не трогал, то у тебя он тоже там, по-умолчанию.
можешь выбрать свою учетку, какую пожелаешь, под которой иис будет лезть в базу.

user posted image

добавить же эту учетку в базу можно через тот же Interprise Manager. 

что касаемо web.config-а.

Код

<configuration>
skip
    <connectionStrings>
        <add name="sqlConnectionString" connectionString="Data Source=(local);Initial Catalog=cv;Integrated Security=True"/>
    </connectionStrings>

skip
</configuration>


а из кода вызываешь по разному. для VS2008 это как-то так:

Код

SqlConnection _sqlConnection = new SqlConnection();
_sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["sqlConnectionString"].ToString();






Автор: Чердак 21.10.2008, 19:41
 У меня IIS версии 5.1, и там Identity я не нашел.

А вот что в кофиг пишу строку, но при ее вызове он мне возвращзает строку, которая где-то видимо по умолчанию забита, сервер там CQLExpress и база одна из 4-х стандартных.
И вызвать можно не по имени, а вот как:

config.connctionstrings.connectoinstring[0].Tostring();



Автор: likegift 21.10.2008, 19:46
Цитата(Чердак @ 21.10.2008,  19:41)
У меня IIS версии 5.1, и там Identity я не нашел.

А вот что в кофиг пишу строку, но при ее вызове он мне возвращзает строку, которая где-то видимо по умолчанию забита, сервер там CQLExpress и база одна из 4-х стандартных.
И вызвать можно не по имени, а вот как:

config.connctionstrings.connectoinstring[0].Tostring();

боюсь спросить, какая студия?)

Автор: Чердак 26.10.2008, 21:31
2005  smile 

IIS - поставил то что с виндой шло, а где можно более свежую версию достать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)