2009-10-21 236 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