none
SQL 2005のWebサービスにASP.NETからアクセスできない RRS feed

  • 質問

  • こんにちは。

    SQL Server 2005 SP1でWebサービスを作成しました。

    このサービスにASP.NET2.0で作成したアプリケーション(発行して、そのディレクトリをIIS管理ツールより仮想ディレクトリ設定した。ASPなどのスクリプトを実行する、にはチェックを入れた。)からアクセスしようとしましたが、以下のようなメッセージのエラーダイアログが表示され、アクセスする事が出来ません。何か設定が必要なのでしょうか?

    There was an error in the incoming SOAP request packet: Client, LoginFailure, AccessDenied

     

    行った作業は、以下のようなスクリプトを実行し、エンドポイントを作成しました。

    sp_configure 'clr enabled', 1
    Go
    RECONFIGURE
    Go

    -------------------------------------------
    IF EXISTS
    (
          SELECT name from sys.http_endpoints
          WHERE name =  'sql_endpoint'
    )
          DROP ENDPOINT sql_endpoint
    GO

    CREATE ENDPOINT sql_endpoint
        STATE = STARTED
    AS HTTP(
        PATH = '/sql',
        AUTHENTICATION = (INTEGRATED ),
        PORTS = (CLEAR))
    FOR SOAP (
       WEBMETHOD 'http://tempUri.org/'.'GetXXX'
                 (name='XXXX.dbo.GetXXX'),
       WSDL = DEFAULT)
    GO

    -------------------------------------------

    grant connect on endpoint ::sql_endpoint to [マシン名\ユーザ名]

    -------------------------------------------

    開発環境はWindows Server 2003 SE SP1で、このマシンにVS2005 Team Edition for DeveloperとSQL Server 2005を入れています。[マシン名\ユーザ名]は、このマシンにログインしているユーザです。このマシンはNTドメインには参加していなくて、ワークグループです。1つのマシンでサーバー、クライアント環境共試しています。

    VS2005からASP.NETアプリケーションをデバッグ実行した時は、問題無く接続できます。また、別の環境(Windows Server 2003 EE SP1 + VS2005 Professional Edition + SQL Server 2005 Developer Edition SP1でNTドメインに参加しているマシンに構築)では、grantのSQLを実行する以前に、問題無く接続出来ます。

     

     

    2006年9月6日 9:35

すべての返信

  • ASP.NET ワーカプロセスの実行ユーザ(NETWORK SERVICE) にログインやらなにやら権限をつけるか、ASP.NET の実行ユーザを %COMPUTERNAME%\USER で偽装するかのどちらかです。
    偽装は Web.Config で
    <identity impersonate="true" userName="%COMPUTERNAME%\USER" password="xxxxxx" />
    とすればできます。
    なお、IIS 側で統合認証を行い、別サーバの SQL Server への接続を Windows 認証などで行う場合は kerberos の委任を行わないと接続できませんので注意してください。
    2006年9月6日 11:32
  • おがわみつぎさん、ありがとうございます。

    web.configでのidentity設定を、system.web内に書いたら、正常に動作しました。

    ASP.NETアプリケーションの実行ユーザは誰なのか?というのがわかっていなかったのです。SQL Serverが別サーバの場合は認証方法などもからんでくるのですね。

    非常に助かりました。ありがとうございました!

    2006年9月6日 23:47