2011-07-22 13 views
6

シナリオ:サーバーに接続し、Webサービスを使用してSharePointリストに関するデータを取得するクライアントでコードを実行しています。 Visual Studio 2010の "サービス参照"を使用して、自分のSPサイト用のWebサービスを取得し、リストから自分のデータを取得しています。できます。今、私はテストからプロダクションに移行したいときに、私のWebサービスコールは引き続き機能するように、どのようにコーディングするのですか? WebサービスはSharePoint Webサービスであり、私はそれを書かなかったことに注意してください。私はそれを使用しています。私は可能なことを提案していますか?私は、サイトが両方の環境で全く同じ(URLを除く)であることを保証する能力を持っています(例えば、SPサイトをバックアップし、実稼働させるなど)。ご意見ありがとうございます。WebサービスのURLを動的に設定する

概要:

基本的に私は、SPのWebサービスを消費し、私のコードを再コンパイルすることなく、生産へのテストから行くための最善の方法を探しています。また、テスト/プロダクションの共有サイトがどれほど似ているかを誰かが知っていれば、[URLが変更されているだけでWebサービスが両方とも動作するように] ..それは参考になります。プロジェクトの設定ファイルは、Webサービスの場所を指定するために使用することができます

ソリューション

。 VSプロジェクトの.svcdatamapとその他​​のファイルはデザイン時のみ使用され、実際にSharePoint Webサービスに接続するために使用されるURLはSystem.Data.Services.Client.DataServiceContextオブジェクトに引数として渡されます。これは接線方向にのみ関連していますが、独自のWCF Webサービスを作成するにはthis linkを参照してください。ところで、Webサービスは、SharePointリストに同じリスト名があり、照会している列が同じ名前であれば、再コンパイルせずに動作します。あなたは私の知る限りでは、プロジェクトのweb.configファイルに

+0

クライアントアプリケーションのどのようなタイプのものでしょうか? Windows /コンソールアプリまたはWebアプリケーションですか?クライアントがSharePoint環境外で動作しているとしますか? –

+0

@Vassili - はい、クライアントはSharePoint環境外で実行されており、Webサービス経由でSharePointに接続しています。文脈は、それがMSFT Officeソリューションであるということです。コードはWord文書と共に実行されます。 – KyleM

答えて

14

をURLを編集する必要が

+1

#2はここです - 私は従来のWeb参照ではなくVS 2010 Service Referenceを使用します。あなたが私に与えた情報を考慮して、URLのハードコーディングや再コンパイルを避けるため、EndpointAddress URLが保存されている設定ファイルが必要です。 – KyleM

+1

はい、コード内のバインディングと残りのエンドポイント属性を適切に構成している限り、WebサービスのURLのみを保存するだけで済みます。 –

+0

私が知る限り、アセンブリにコンパイルされたService Referencesフォルダからの唯一のファイルはReference.csです。 .svcmapファイルを含むその他の自動生成ファイルは、Visual Studioのデザイン時のみ使用します。 Webサービスプロキシは、設定ファイルからエンドポイント情報をロードするため、開発環境でWebサービスコールを行うことができる場合は、プロジェクト内にそれらのいずれかが存在する必要があります。 –

0

、OfficeのプロジェクトのためのVisual Studioツールを使用すると、プロジェクト内のapp.configファイルを持つことができます。私は、Visual Studioがapp.configファイルを作成し、Webサービス参照に関連する必要な構成設定を追加することを期待していました。いずれにしても、app.config、レジストリ、データベースなど、正しいWebサービスURLをどこかに格納する必要があります。

あなたはapp.configファイル内のWebサービス・エンドポイント・アドレス情報を格納することができない場合は、手動でプロキシを設定する方法があります。

  1. それはあなたが任意のWebサービスメソッドを呼び出す前に、あなたがする必要があるすべてはプロキシオブジェクトのUrlプロパティの値を設定されているVisual Studioでレガシー「Web参照」として追加の.asmx参照だ場合。例えば:それは.SVC WCFサービス参照なら

    MyASMXWebService proxy = new MyASMXWebService(); 
    proxy.Url = "web service url"; 
    proxy.HelloWorld(); 
    
  2. はその後、物事はもう少し複雑になります。プログラムでWebサービスエンドポイントを作成する必要があります。たとえば:SharePointのサービス(SVC)は、プロキシを提供していないので

    BasicHttpBinding binding = new BasicHttpBinding(); 
    EndpointAddress endpoint = new EndpointAddress("web service url"); 
    
    ChannelFactory<IMyWCFWebService> factory = new ChannelFactory<IMyWCFWebService>(binding, endpoint); 
    IMyWCFWebService proxy = factory.CreateChannel(); 
    
    proxy.DoWork(); 
    
+0

? web.configはありません。クライアントがSharePoint環境で実行されていません。私のVSプロジェクトの唯一の設定ファイルは、拡張子に ".map"というURLがあり、VS 2010に "Service reference"を追加したときに作成されたものです。 – KyleM

1

、オプション2は動作しません。両方の場所への参照がアプリ​​ケーションに含まれている必要があります。次に、parmを使用してプロダクションとテストを区別します。 2013年はこのバグを修正する可能性が高いと思います。

+0

実際には、私はそれをテストしたので、受け入れられた答えのオプション#2は間違いなく機能します。私はもはやSharePoint、C#、またはASP.NET開発者ではなくなりましたので、Visual Studioを使用しなくなりましたが、@Vassili Altynikovのアドバイスを掲載していました。 – KyleM

0

単純なのSharePoint例:

MyService.ListsSoapClient client = new MyService.ListsSoapClient(); 
client.Endpoint.Address = "site url"+"/_vti_bin/lists.asmx"; 
関連する問題