我的网页位于安全服务器 (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();
}
您的连接字符串告诉它使用集成安全 SSPI,这将使用 Windows 凭据。
如果您要提供用户名和密码,请将
Integrated Security
设置为 false
。
此外,请考虑将连接字符串放入 web.config 文件中 - 它更安全且可重用。
如果为 false,则在连接中指定用户 ID 和密码。如果为 true,则使用当前 Windows 帐户凭据进行身份验证。 识别的值为 true、false、yes、no 和 sspi(强烈推荐),相当于 true。 如果指定了用户 ID 和密码并将集成安全性设置为 true,则将忽略用户 ID 和密码并使用集成安全性。
我创建了一个新的 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,这与错误消息一致。一般来说,我不会使用不受信任的连接。在本例中,我连接到开发/测试数据库,所以没问题。
对于未来的谷歌用户:
如果您确实需要
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"
(这是针对 VS2019 的,您的路径可能会有所不同)。
老问题,我的症状略有不同,但同样的错误。我的连接字符串是正确的(集成安全性,并且我不提供用户和密码),
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)中得到了线索,其中讨论了主机名和环回。
其他可能的修复(如果您需要在主机文件中保留该行)是在连接字符串的
MYSERVER01
中使用主机名(如 127.0.0.1
)而不是 data source
。
我在使用 Azure 身份验证的工作中访问此内容时遇到了同样的问题 - 我通过 Azure 密码重置服务更改了密码,但这只是在我手动更新 RDBMS 中架构设置的密码后(在我的 RDBMS 中)才得以解决。案例,DataGrip)。
runas /netonly /user:DOMAIN\USER 迄今为止互联网上最好的解决方案!谢谢你,阿吉!