Ошибка входа. Вход из ненадежного домена и не может использоваться с аутентификацией Windows
Мои веб-страницы находятся на защищенном сервере (https), и я пытаюсь подключить базу данных SQL Server 2008, которая является обычным сервером.
Я пишу connectionstring на самой странице, а не в файле web.config. И я получаю следующую ошибку: -
System.Data.SqlClient.SqlException: Login failed.
The login is from an untrusted domain and cannot be used with Windows authentication.
Пожалуйста, помогите, как я могу подключить его, должен ли я сделать некоторые веб-службы для него.
мой код выглядит следующим образом:
public void FillCity()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "integrated security=SSPI;data source=dev-fcb; user id=sa;password=password;"
+"persist security info=False;database=mediapro";
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("select * from StateCityMaster where IsActive='1' order by CityName", con);
DataSet ds = new DataSet();
da.Fill(ds);
string CityName = string.Empty;
if (ds.Tables[0].Rows.Count > 0)
{
CityName = ds.Tables[0].Rows[0]["CityName"].ToString();
}
DataSet dset = new DataSet();
da.Fill(dset);
if (dset.Tables[0].Rows.Count > 0)
{
drpCity.DataSource = dset;
drpCity.DataTextField = "CityName";
drpCity.DataValueField = "CityName";
drpCity.DataBind();
}
drpCity.Items.Insert(0, new ListItem("--Select--", "0"));
con.Close();
}
Ответы
Ответ 1
Строка подключения сообщает об использовании встроенного SSPI безопасности, который будет использовать учетные данные Windows.
Установите Integrated Security
в false
, если вы хотите указать имя пользователя и пароль.
Кроме того, рассмотрите возможность размещения вашей строки соединения внутри файла web.config - это более безопасное и многоразовое.
Из http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=VS.100).aspx:
Если в соединении указано false, идентификатор пользователя и пароль. Если значение true, текущие учетные данные учетной записи Windows используются для аутентификации.
Признанные значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true.
Если указаны идентификатор пользователя и пароль, а для параметра "Интегрированная безопасность" установлено значение "Истина", идентификатор пользователя и пароль будут игнорироваться, и будет использоваться функция "Интегрированная безопасность".
Ответ 2
Старый вопрос, и мои симптомы немного разные, но та же ошибка. Моя строка подключения верна (встроенная защита, а я не предоставляю пользователю и pwd) с data source
, установленным на 127.0.0.1
. Он работал отлично в течение многих лет.
Но недавно я добавил строку в статический файл хоста для тестирования (C:\Windows\System32\drivers\etc\hosts
)
127.0.0.1 www.blablatestsite.com
Удаление этой строки и ошибка исчезла.
У меня есть ключ к этой статье (https://support.microsoft.com/en-gb/kb/896861), в котором говорится об именах хостов и loopback.
Другое возможное исправление (если вам нужно сохранить эту строку в файле hosts) - использовать имя хоста (например, MYSERVER01
) вместо 127.0.0.1
в строке data source
строки подключения.
Ответ 3
Для будущих гуглеров:
Если вам нужен Integrated Security
и вы получаете эту ошибку, возможно, вы используете local account
вместо domain account
.
Я сталкивался с этой запущенной Visual Studio локально и пытался подключиться к базе данных на другом компьютере. Обходной путь состоял в том, чтобы запустить Visual Studio от имени другого пользователя, приглашение не сработало, но выполнение приведенной ниже команды сработало (обязательно замените DOMAIN\USER
, и вас попросят предоставить учетные данные):
runas /netonly /user:DOMAIN\USER "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe"
Ответ 4
Я создал новый сайт Asp.Net Core MVC, и у меня была такая же ошибка. Я пытался подключиться к базе данных своей компании при подключении к сети через VPN. Вот что у меня сработало:
Вместо
"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=SSPI;Trusted_Connection=True;"
Я использовал
"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=False;Trusted_Connection=False;"
Главное изменение состояло в том, чтобы убедиться, что Trusted_Connection = False, что соответствует сообщению об ошибке. Обычно я бы не использовал ненадежное соединение. В этом случае я подключался к базе данных dev/test, так что все в порядке.