gpt4 book ai didi

asp.net - 对于一个存储过程调用,SQL 登录从 Web 应用程序失败

转载 作者:行者123 更新时间:2023-12-02 11:24:24 24 4
gpt4 key购买 nike

幸运的是,这是在 UAT 中而不是在生产中。

UAT 服务器是运行 SQL Server 2012 和 Windows Server 2012 的 Azure VM。在应用程序的一页上我收到错误

Login failed for user 'User'. at System.Data.SqlClient.SqlInternalConnection

Microsoft.ApplicationBlocks.Data.SqlHelperParameterCache.GetSpParameterSetInternal(SqlConnection connection, String spName, Boolean includeReturnValueParameter)
at Microsoft.ApplicationBlocks.Data.SqlHelperParameterCache.GetSpParameterSet(String connectionString, String spName, Boolean includeReturnValueParameter)
at Microsoft.ApplicationBlocks.Data.SqlHelperParameterCache.GetSpParameterSet(String connectionString, String spName)

该登录名是 SQL Server 登录名,而不是域登录名

在同一网页上,在开始调用此存储过程之前,使用相同的连接字符串对同一数据库进行了 3 个其他存储过程调用

我已经删除并重新创建了存储过程

我已删除并重新创建数据库登录

该帐户是数据库角色的成员,该角色授予它对该存储过程所属架构的 EXECUTE 权限

如果我以此用户身份登录 SSMS,我可以:

  • 展开数据库的存储过程列表
  • 展开受影响存储过程的参数列表
  • 运行受影响的存储过程并获得预期结果

我在 SQL Server 上设置了一个替代 Web 服务器,它在连接字符串中使用域登录,运行没有问题。我们正在尝试弃用该网站的 SQL Server 版本。

任何人都可以建议可能导致此问题的原因以及如何解决它吗?

最佳答案

感谢 .NET SqlClient 安全行为。通过数据应用程序 block 进行工作调用

return SqlHelper.ExecuteReader(ConnectionString, sql_OutboundQueue_TypeAndStatusCount, DBUtility.GetNull(since)); 

这会调用 SqlHelperParameterCache.GetSpParameterSet

通过数据应用程序 block 调用失败

SqlConnection con = new SqlConnection(QueueDataProvider.ConnectionString);
SqlCommand cmd = new SqlCommand(QueueDataProvider.OutboundQueue.sql_OutboundQueue_Search, con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(SqlHelperParameterCache.GetSpParameterSet(con.ConnectionString, cmd.CommandText));

原因:如果您使用 SQL 登录,con.ConnectionString 会清除密码,但只有在您调用 con.Open 之后才会清除

感谢:ConnectionString loses password after connection.Open

关于asp.net - 对于一个存储过程调用,SQL 登录从 Web 应用程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com