ASMX WebサービスからSQL Serverへのアクセスエラー
-
05-07-2019 - |
質問
リモートデスクトップ接続を介してサーバーにアクセスし、IISでWebサービスを構成しました。メソッドを見ることができますが、ボタンをクリックして<!> quot; Invoke <!> quot;次のエラーが表示されます:
System.Data.SqlClient.SqlException:ユーザー 'SOLDev \ Server02 $'のログインに失敗しました。 ShareWare.Web.Service.WebAPI.Reservation.GetInfo()で
ユーザーとしてマシン名を使用するのはなぜですか? 私のWindows認証ユーザーはUser1Devです。 また、IISの私のディレクトリセキュリティは次のように設定されています。
- オプション<!> quot;匿名アクセスを有効にする<!> quot; -無効になっています
- オプション<!> quot;統合Windows認証<!> quot; -チェックオフ
.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
。