从ASMX Web服务访问SQL Server时出错

时间:2009-10-21 20:41:06

标签: sql-server web-services permissions asmx

我通过远程桌面连接访问我的服务器,并在IIS中配置了一个Web服务。我能够看到方法但是当我点击按钮“调用”时,我收到以下错误:

System.Data.SqlClient.SqlException:用户'SOLDev \ Server02 $'登录失败。    在ShareWare.Web.Service.WebAPI.Reservation.GetInfo()

为什么将机器名称作为用户? 我的Windows身份验证用户是User1Dev。 我在IIS中的目录安全性的设置如下:

  1. 选项“启用匿名访问” - 已禁用
  2. 选项“集成Windows身份验证” - 已选中
  3. 我正在使用.NET framework 2.0

2 个答案:

答案 0 :(得分:1)

您的Web服务使用Windows身份验证作为运行该服务的主体连接到SQL。在这种情况下,它似乎是BUILTIN \ System或BUILTIN \ Network Service,它们都在域中作为机器帐户进行身份验证,即。 'SOLDEV \ Server02 $',对应于域SOLDEV中名为Server02的计算机。

如果您希望使用自己的登录在SQL Server上进行身份验证,则IIS必须在名为Constrained Delegation的过程中传递身份验证信息。请参阅Configuring Constrained Delegation for Kerberos (IIS 6.0).How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0

如果您希望Web服务自身向SQL Server进行身份验证,则必须在SQL上为Web服务主体授予登录权限:CREATE LOGIN [SOLDEV\Server02$] FROM WINDOWS

答案 1 :(得分:0)

这是因为Web服务作为网络服务ID运行,而不是作为登录用户运行。如果您计划使用用户的凭据连接到SQL Server,则可能还需要在Web配置中使用<identity impersonate="true" />