2009-10-21 201 views
0

我访问通过远程桌面连接我的服务器,并配置在IIS web服务访问SQL服务器。我能够看到的方法,但当我点击按钮“调用”我得到以下错误:错误从ASMX Web服务

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

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

  1. 选项 “启用匿名访问” - 这是残疾人
  2. 选项 “集成Windows身份验证” - 勾掉

我我使用.NET Framework 2.0

+0

详细一点,好吗? – 2009-10-21 20:48:46

+0

除此之外,当您不使用远程桌面时会发生问题吗?当你不使用“Invoke”按钮时会发生吗? – 2009-10-21 20:50:21

回答

0

这是因为Web服务正在运行的网络服务标识,不作为登录的用户。如果您打算使用用户的凭据连接到SQL Server,那么您的web配置中可能还需要有<identity impersonate="true" />

+0

我认为这是必要的mentione是把下面这行代码: 要 做到这一点,你可以插入这样的web.config中元素: <配置> < - 任何你想inside system.web - > Tony 2009-10-22 12:29:59

1

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

如果你想用自己的登录SQL Server上进行身份验证,则IIS必须流的认证信息,在一个名为约束委派过程。见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