登录失败。登录来自不受信任的域,不能与Windows身份验证一起使用

时间:2013-01-05 10:35:06

标签: sql web-services sql-server-2008 https

我的网页位于安全服务器(https)上,我正在尝试连接SQL Server 2008数据库,这是普通服务器。 我在页面本身上编写连接字符串,而不是在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();
}

4 个答案:

答案 0 :(得分:30)

您的连接字符串告诉它使用集成安全SSPI,它将使用Windows凭据。

如果您要提供用户名和密码,请将Integrated Security设置为false

另外,请考虑将您的连接字符串放在web.config文件中 - 它更安全且可重用。

来自http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=VS.100).aspx

如果为false,则在连接中指定用户ID和密码。如果为true,则使用当前Windows帐户凭据进行身份验证。 识别的值是true,false,yes,no和sspi(强烈推荐),这相当于true。 如果指定了用户ID和密码并且Integrated Security设置为true,则将忽略用户ID和密码,并将使用Integrated Security。

答案 1 :(得分:0)

老问题,我的症状略有不同,但同样的错误。我的连接字符串是正确的(集成安全性,我不提供用户和密码),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)中得到了一个线索,其中讨论了主机名和环回。

其他可能的修复(如果您需要在hosts文件中保留该行)是在连接字符串的MYSERVER01中使用主机名(如127.0.0.1)而不是data source

答案 2 :(得分:0)

针对未来的Google员工:

如果您确实需要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"

答案 3 :(得分:0)

我创建了一个新的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,这与错误消息一致。通常,我不会使用不受信任的连接。在这种情况下,我正在连接到开发/测试数据库,所以很好。