QA@IT

C#2013 Webサービス参照をコードで追加する。

3088 PV

C#2013 Sharepoint2010で開発しております。
やりたい事としまして、Sharepoint内の全てのサイト毎にリストを取得したいのですが、
複数存在するサイト毎にWeb参照を手動で追加せず、プログラムで追加したいというものです。

http://server/site1/_vti_bin/Lists.asmx
http://server/site2/_vti_bin/Lists.asmx
http://server/site3/_vti_bin/Lists.asmx
・・・

プログラムでWeb参照追加を行う方法につき、ご教示くださいませ。

どうか宜しくお願い致します。

回答

wsdl.exe でC#のコードを生成して、 CSharpCodeProvider で動的にプロキシクラスを作成できると思います。
しかし、その先はどうするのでしょうか?

http://qa.atmarkit.co.jp/q/6740

編集 履歴 (0)

Sharepoint を知らない自分がレスするのもなんですが、ASP.NET で Web サービスを利用するのと同じことだと理解して回答します。

プログラムでWeb参照追加を行う方法につき、ご教示くださいませ。

サービスプロキシをダイナミックにプログラムで作成して追加すると言う話ではないですよね?(それは無理だと思います)

複数の Web サービス(.asmx)が存在するが中身は同じ。サービスプロキシも URL のみ変更すれば同じものが使える。なので、プログラムでサービスプロキシの URL を書き換えて使いまわしたいと言うことであれば可能なはずです。

SDK に含まれている wsdl.exe を使ってサービスプロキシのソースコードを生成し、それを Web アプリに配置して(Web サイトプロジェクトなら App_Code フォルダを使うこと)、Web アプリからはそれの Url プロパティをプログラムで書き換えることができます。

具体的には以下の記事を見てください。

XML Web サービス プロキシの作成
https://msdn.microsoft.com/ja-jp/library/d2s8y7bs(v=vs.90).aspx

How to call/Invoke a web service without adding web reference
http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/05/13/how-to-call-invoke-a-web-service-without-adding-web-reference.aspx

Sharepoint の独自拡張の部分で何かする手段があると言うことでしたら失礼しました。上の書き込みは忘れてください。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。