我通过远程桌面连接访问我的服务器,并在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

有帮助吗?

解决方案

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

其他提示

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

如果您希望使用自己的登录在SQL Server上进行身份验证,则IIS必须在名为Constrained Delegation的过程中传递身份验证信息。请参阅配置Kerberos的约束委派(IIS 6.0)。如何:使用ASP.NET 2.0中的协议转换和约束委派

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top