使用 Web 服务为 Windows 窗体客户端运行 SQL 查询

Posted

技术标签:

【中文标题】使用 Web 服务为 Windows 窗体客户端运行 SQL 查询【英文标题】:Use a Web Service to Run SQL queries for a Windows Forms Client 【发布时间】:2012-06-04 19:32:07 【问题描述】:

我需要使用在远程客户端上运行的 Windows 应用程序,该应用程序将连接到 Web 服务。 Web 服务将访问 SQL 数据库以验证用户和角色,并执行其他任务。我正在使用 ASP.NET Membership 来管理用户和角色。我有 ASP.NET 成员资格,并且 Web 服务在开发机器上工作。我有一个带有服务引用的 Windows 客户端,当我访问不访问数据库的方法时,它可以工作,但是当我尝试访问访问数据库方法的服务方法时,我得到 用户未与受信任的 SQL 关联服务器连接。 根据我尝试解决的问题,我会收到各种权限错误,但这是要点。我不希望 Windows 客户端需要数据库权限。我希望它向 Web 服务发送用户名和密码,然后 Web 服务包装 Membership.ValidateUser(userName, password)

谁能告诉我如何设置?

【问题讨论】:

【参考方案1】:

您应该考虑将 SQL Server 设置为使用 SQL 和 Windows 身份验证(混合模式)。它很可能仅在 Windows 身份验证模式下运行。您可以查看this 链接以开始使用。

听起来,按照您的设计方式,您必须为每个用户设置一个帐户。根据我的经验,最好只创建一个具有必要权限的特定 SQL 帐户,并让每个客户都使用该帐户。您可以在连接字符串中指定它。

【讨论】:

【参考方案2】:

假设您在 SQL 中启用了命名管道身份验证,您的 ASP.NET 应用程序中的 SQL 连接字符串可以配置为使用集成安全性 (Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;)。然后在 SSMS 中,将适当的 ASP.NET 用户权限授予数据库。 IIS 使用的用户取决于您运行的 IIS 版本,并且可以在相关服务器的应用程序池配置中看到。

【讨论】:

以上是关于使用 Web 服务为 Windows 窗体客户端运行 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

AJAX IRCX 客户端和服务器

web窗体页面之间的传值

从 C# Windows 窗体调用 PHP Web 服务

SignalR - 在Windows窗体服务器上验证Windows窗体用户

将 Web Api 服务自托管到 Windows 窗体中

Visual Studio Windows窗体添加Web服务引用错误。无法创建SSLTLS安全通道