[HOWTO] ASP.NET Web サービスと Visual C# .NET を使用してバイナリ ドキュメントを送受信する方法

文書翻訳 文書翻訳
文書番号: 318425 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft ASP.NET と Microsoft Visual C# .NET を使用して、バイナリ ドキュメントを送受信するための Web サービスと Web サービス クライアントを作成する方法を手順を追って説明します。ASP.NET と Visual C# .NET を使用すると、Web サーバー上のフォルダに対してバイナリ ドキュメントの保存と取得の両方を行う Web サービスを作成できます。このサービスは、Web 上の簡単なドキュメント管理システムとして使用できます。

Web サービスを作成する

  1. Visual Studio. NET で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
  2. [Visual C# プロジェクト] の [ASP.NET Web サービス] をクリックします。[場所] として http://localhost/DocumentManagementService を入力するかまたは貼り付けて、[OK] をクリックします。デフォルトで、Service1.asmx が作成され、デザイン ビューで表示されます。
  3. [表示] メニューの [コード] をクリックして、Service1.asmx のコード ビューを表示します。
  4. 次の Web メソッド コードを Service1 class クラスに追加します。
    [WebMethod]
    public bool SaveDocument( Byte[] docbinaryarray, string docname)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + docname;
    	FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.ReadWrite);
    	objfilestream.Write(docbinaryarray,0,docbinaryarray.Length);
    	objfilestream.Close();
    	return true;
    }
    [WebMethod]
    public int GetDocumentLen(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	objfilestream.Close();
    	return len;
    } 
    [WebMethod]
    public Byte[] GetDocument(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	Byte[] documentcontents  = new Byte[len];
    	objfilestream.Read(documentcontents,0,len);
    	objfilestream.Close();
    	return documentcontents;	
    } 
    					

    : 上記のコードを使用すると、ドキュメントが、サーバーの <root>:\\DocumentDirectory\\ ディレクトリ パスに保存されます。パスは、実際にドキュメントを保存する Web サーバー上のフォルダに変更する必要があります。

  5. Service1.asmx の先頭に次の名前空間を追加します。
    using System.IO;
  6. Web サービスをテストします。
    1. [デバッグ] メニューの [開始] をクリックして、Web サービスを開始します。これにより Web ブラウザが起動し、サービスの説明のヘルプ ページが表示されます。
    2. [SaveDocument]、[GetDocument]、および [GetDocumentLen] の各メソッドが表示されることを確認します。
    3. Web ブラウザのウィンドウを閉じて、デバッグを終了します。

Web サービスのクライアントを作成する

  1. Visual Studio .NET で、[ファイル] メニューの [プロジェクトの追加] をクリックし、[新しいプロジェクト] をクリックします。
  2. [Visual C# プロジェクト] ボックスの一覧で [Windows アプリケーション] をクリックし、[OK] をクリックします。デフォルトで Form1 が作成されます。
  3. 以下の手順に従って、Web サービスへの Web 参照を追加します。
    1. ソリューション エクスプローラで、クライアント プロジェクトの項目を右クリックします。次に、コンテキスト メニューの [Web 参照の追加] をクリックします。
    2. [Web 参照の追加] ダイアログ ボックスで、Web サービスの Web サービス記述言語 (WSDL: Web Services Description Language) ファイルへの URL を入力し、Enter キーを押します。

      : WSDL ファイルのデフォルトの場所は、http://localhost/DocumentManagementService/Service1.asmx?WSDL です。
    3. [Web 参照の追加] ダイアログ ボックスで、[参照の追加] をクリックします。
  4. Form1 にボタンを 2 つ追加します。button1 の Text プロパティを "Store Document on the Server" に設定します。button2 の Text プロパティを "Retrieve Document from the Server" に設定します。
  5. [button1] と [button2] をダブルクリックし、各ボタンのデフォルトの Click イベント ハンドラを作成します。
  6. 各ハンドラを以下のコードで置き換えます。
    string sFile = "<file path>";
    private void button1_Click(object sender, System.EventArgs e)
    {
    	FileStream objfilestream = new FileStream(sFile,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;
    	Byte[] mybytearray = new Byte[len];
    	objfilestream.Read(mybytearray,0,len);
    	localhost.Service1 myservice = new localhost.Service1();
    	myservice.SaveDocument(mybytearray,sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Close();
    }
    private void button2_Click(object sender, System.EventArgs e)
    {
    	MemoryStream objstreaminput = new MemoryStream();
    	FileStream objfilestream = new FileStream(sFile.Insert(sFile.LastIndexOf("."),"2"), FileMode.Create,FileAccess.ReadWrite);
    						
    	localhost.Service1 myservice = new localhost.Service1();
    	int len = (int)myservice.GetDocumentLen(sFile.Remove(0,sFile.LastIndexOf("\\")+1)); 
    	Byte[] mybytearray = new Byte[len];
    	mybytearray = myservice.GetDocument(sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Write(mybytearray,0,len);
    	objfilestream.Close();
    }
    					
    : 変数 sFile には、サーバーにアップロードするドキュメントへのローカル ファイル パスを設定する必要があります。そのドキュメントをダウンロードすると、同じフォルダに保存され、ファイル名に "2" という値が付加されます。

  7. ファイルの先頭に次の名前空間を追加します。
    using System.IO;
  8. ソリューション エクスプローラで、クライアント プロジェクトの項目を右クリックします。次に、コンテキスト メニューの [スタートアップ プロジェクトに設定] をクリックします。

実際に試してみる

  1. [デバッグ] メニューの [開始] をクリックします。Form1 が表示されます。
  2. [Store Document on the Server] というボタンをクリックすると、Web メソッド SaveDocument が呼び出されます。この Web メソッドにより、ローカル ドキュメントがサーバー上の <root>:\DocumentDirectory\ フォルダに保存されます。ドキュメントの転送後は、転送先フォルダにファイルが存在することを確認します。
  3. [Retrieve Document from the Server] というボタンをクリックすると、Web メソッド GetDocument が呼び出されます。この Web メソッドにより、サーバー上の <root>:\DocumentDirectory\ フォルダからドキュメントが取得され、コードで指定したローカル ドライブに保存されます。

関連情報

関連情報については、Microsoft Visual Studio .NET のマニュアルを参照してください。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 318425 (最終更新日 2003-12-15) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 318425 - 最終更新日: 2004年6月16日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbhowtomaster KB318425
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com