none
公開WebサービスをWindowsアプリで使用する方法 RRS feed

  • 質問

  • いつもお世話になっております。

    公開WebサービスをWindowsアプリで使用する方法に関しましてご教授いただきたくお願いいたします。

    現在、Windowsアプリで公開Webサービス(Lists)を使用しリスト中のアイテム情報を取得するプログラムを作成しています。

    APサーバ上では問題なく動作するのですが、

    SQLサーバ(moss.dllがありません)上では「オブジェクト参照がオブジェクトインスタンスに設定されていません」とのエラーで

    Webサービスを参照できていないようです。

    app.config などの設定に不足があるのでしょうか。

    ご教授いただけると助かります。

    どうぞよろしくお願いいたします。

    2012年7月11日 5:55

回答

  • んそるさん

    いただいている情報からだけだと、なかなか厳しいですが、いくつか気になるところを書きます。
    SQL Server上でWebサービスを呼び出すと「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが出るとのことですが、このエラーはWebサービス呼び出しを行っている行で発生しているエラーですか?
    それともその前後で出ているエラーでしょうか?

    それから、SQL Server上でブラウザを開いて、WebサービスのURLにアクセスしたらどうなりますか?
    Webサービスのページは開けますか?
    Webサービスを参照できていないとしたら、これを試すとページが開けない、あるいは見つけられないはずです。
    開けたとしたら、Webサービス呼び出しはおそらくうまくいっていて、その前後のコードに問題があるのではないかと思います。


    SharePoint Developer http://sharepoint.orivers.jp

    • 回答としてマーク 山本春海 2012年7月31日 9:02
    2012年7月11日 17:20
  • 及川様

    お返事が遅れました。

    アプリ実行ユーザをサイト所有者に変更して実行したところ、

    処理が実行されたことを確認いたしました。

    アドバイスいただきありがとうございました。

    • 回答としてマーク 山本春海 2012年7月31日 9:03
    2012年7月17日 5:00

すべての返信

  • んそるさん

    いただいている情報からだけだと、なかなか厳しいですが、いくつか気になるところを書きます。
    SQL Server上でWebサービスを呼び出すと「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが出るとのことですが、このエラーはWebサービス呼び出しを行っている行で発生しているエラーですか?
    それともその前後で出ているエラーでしょうか?

    それから、SQL Server上でブラウザを開いて、WebサービスのURLにアクセスしたらどうなりますか?
    Webサービスのページは開けますか?
    Webサービスを参照できていないとしたら、これを試すとページが開けない、あるいは見つけられないはずです。
    開けたとしたら、Webサービス呼び出しはおそらくうまくいっていて、その前後のコードに問題があるのではないかと思います。


    SharePoint Developer http://sharepoint.orivers.jp

    • 回答としてマーク 山本春海 2012年7月31日 9:02
    2012年7月11日 17:20
  • 及川様

    お返事ありがとうございます。

    ご指摘いただきました、2点目のSQL Server上でブラウザを開いて、WebサービスのURLにアクセスは

    可能でした。

    ここで気になったのはWindowsアプリの実行ユーザに権限が無い場合、この現象が起こるのでは?と考えました。

    ご指摘の1点目と併せて、またお返事させていただきます。

    よろしくお願いいたします。


    • 編集済み んそる 2012年7月12日 7:32
    2012年7月12日 7:31
  • んそるさん

    権限がなければ、権限がないことがわかるエラーが返ってくるのではないかと思っていますが、試していないのでわかりません。
    進展あるといいのですが・・・
    こちらでも何かわかったことがあれば、返信させていただきます。


    SharePoint Developer http://sharepoint.orivers.jp

    2012年7月12日 17:01
  • お世話になっております。

    少し状況を確認できましたので、お知らせさせていただきます。

    以下の情報で問題箇所が特定できるでしょうか。調査の途中ですが、情報をUpさせていただきました。

    どうぞよろしくお願いいたします。

    【ソース】

     // 参照オブジェクトのインスタンス
     NoticeMail_koukan.ListsWS.Lists _lists = new NoticeMail_koukan.ListsWS.Lists();
     _lists.Url = wsUrl;
     _lists.Credentials = System.Net.CredentialCache.DefaultCredentials;

     // 検索に必要なXmlNodeオブジェクト生成
     XmlDocument xmlDoc = new XmlDocument();
     XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
     XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
     XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

     // 検索オプション
     ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" +   "<DateInUtc>TRUE</DateInUtc>";

     // 検索条件
     ndQuery.InnerXml = strQuery;

     // アイテムの取得
     XmlNode ndListItems = _lists.GetListItems(strListName, null, ndQuery, ndViewFields, null, ndQueryOptions, null);

    【エラーログ】

    リストの情報取得処理でエラーが発生しました。アイテムの情報取得処理でエラーが発生しました。
    種類 'Microsoft.SharePoint.SoapServer.SoapServerException' の例外がスローされました。
    sourceオブジェクト名:System.Web.Services
    Detail:System.Xml.XmlElement
    code違反コードの種類:http://schemas.xmlsoap.org/soap/envelope/:Server
    ToString文字列形式:System.Web.Services.Protocols.SoapException:
       種類 'Microsoft.SharePoint.SoapServer.SoapServerException' の例外がスローされました。
       場所 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
       場所 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       場所 XYB_Batch.NoticeMail_koukan.ListsWS.Lists.GetListItems(String listName, String viewName, XmlNode query, XmlNode viewFields, String rowLimit, XmlNode queryOptions, String webID)
       場所 XYB_Batch.NoticeMail_koukan.MailSender.getListItemRows(String strListName, String strQuery)

    2012年7月13日 7:11
  • んそるさん

    エラーを見る限り、サーバーには到達してそうですね。

    そうすると最初にんそるさんがおっしゃっていた通り、やはり権限なんですかね。。。
    APサーバーでは動くとのことですが、SQL Serverでこのプログラムを実行するユーザーには、当該リストへのアクセス権は付いていますか?




    SharePoint Developer http://sharepoint.orivers.jp

    2012年7月15日 7:05
  • 及川様

    お返事が遅れました。

    アプリ実行ユーザをサイト所有者に変更して実行したところ、

    処理が実行されたことを確認いたしました。

    アドバイスいただきありがとうございました。

    • 回答としてマーク 山本春海 2012年7月31日 9:03
    2012年7月17日 5:00
  • んそる さん

    なるほど、権限の問題だったということですね。
    解決してよかったです。

    SharePoint Developer http://sharepoint.orivers.jp

    2012年7月17日 17:36