gpt4 book ai didi

c# - 为什么 SQL 语句在对 DB 进行时可以工作,但不能通过 WCF 进行?

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

我还是 .NET 的新手,我不明白为什么从应用程序到数据库运行良好的 sql 语句现在在我尝试将其卸载到服务时却不起作用。我有一个 Winform,它有一个日期、承运人和上传者复选框,具体取决于所检查的内容,sql 语句应该像应用程序与数据库对话时那样遵守它。我是否必须为每个可能的选项编写一个 OperationContract? (即单独的日期、日期和承运人、日期和上传者等……)谢谢!

public DataSet GetStatTableYear(StatDetails statInfo)
{
SqlConnection con = new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=vurdevice;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand(@"SELECT CONVERT(VARCHAR(4), CreateDate, 112) AS cPeriod, COUNT(DISTINCT IMEINo) AS TotalIMEINo, COUNT(*) AS TotalImageCnt, SUM(FileSize) AS TotalFileSize
FROM VR_Image
WHERE (@Uploader IS NULL OR Uploader = @Uploader)
AND (@CarrierID IS NULL OR CarrierID = @CarrierID)
AND DeleteDate IS NULL
GROUP BY CONVERT(VARCHAR(4), CreateDate, 112)
ORDER BY cPeriod", con);
cmd.Parameters.AddWithValue("@CarrierID", statInfo.CarrierID);
cmd.Parameters.AddWithValue("@Uploader", statInfo.Uploader);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
cmd.ExecuteNonQuery();
con.Close();
return ds;
}

最佳答案

在您使用集成安全性的连接字符串中,这意味着使用 Windows 身份验证来建立连接。

您的 Windows 窗体应用程序正在您的 Windows 帐户安全上下文中运行,并且可以连接。

除非您在 IIS 和 web.config 中启用它,否则 WCF 应用程序很可能不使用 Windows 身份验证,在这种情况下,我相信 IIS 应用程序池身份/帐户无权访问数据库以建立该连接。

这是我现阶段的最佳猜测,因为您还没有解释您收到的失败的详细信息。

关于c# - 为什么 SQL 语句在对 DB 进行时可以工作,但不能通过 WCF 进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27867065/

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