gpt4 book ai didi

c# - 如何保护我的查询 : I get The SqlParameter is already contained by another SqlParameterCollection

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:09 25 4
gpt4 key购买 nike

我正在尝试参数化所有查询以满足来自 Visual Studio 中的 PUMA 漏洞扫描扩展的 SQL 注入(inject)结果。这样做时,我遇到了标题中的错误:

The SqlParameter is already contained by another SqlParameterCollection

这是相关代码(第二行产生错误):

    IEnumerable<UploadedDocsClass> docLst = prfDao.GetUploadedDocLog(Convert.ToInt32(id));
if (docLst.Count() > 0){ //<-- this is where the error is thrown
...
}

public IEnumerable<UploadedDocsClass> GetUploadedDocLog(int tickId)
{
string s = "SELECT * FROM MyTable WHERE [request_id] = @tickId ";
MyDataBaseContext accCon = new MyDataBaseContext();
return accCon.Database.SqlQuery<UploadedDocsClass>(s, new SqlParameter("@tickId", Convert.ToString(tickId)));
}

我已在此处和 Google 中进行了搜索,但似乎无法找到适合我的具体情况的解决方案。我试过克隆参数,专门声明它并在使用后将其设置为 null,在使用前将其放入集合中,我什至尝试在参数名称的末尾添加一个随机数所以每次都不同,但没有,同样的错误。

如何在查询中使用参数的同时解决这个问题?

谢谢

最佳答案

是因为IEnumerable<UploadedDocsClass>回。当 docLst.Count() 时,它会尝试再次执行称为 - 不同的执行

尝试返回 List<T>

MSDN: The query is not executed when this object is created; it is executed each time it is enumerated, for example by using foreach.

显然,它正在尝试重用添加到另一个集合(先前执行)的参数

关于c# - 如何保护我的查询 : I get The SqlParameter is already contained by another SqlParameterCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46412908/

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