我通过远程桌面连接访问我的服务器,并在IIS中配置了一个Web服务。我能够看到方法但是当我点击按钮“调用”时,我收到以下错误:
System.Data.SqlClient.SqlException:用户'SOLDev \ Server02 $'登录失败。 在ShareWare.Web.Service.WebAPI.Reservation.GetInfo()
为什么将机器名称作为用户? 我的Windows身份验证用户是User1Dev。 我在IIS中的目录安全性的设置如下:
我正在使用.NET framework 2.0
答案 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" />
。