2011-01-28 10 views
1

私はC#でWebサービスアプリケーションを使用しています。 Visual StudioでDebugを実行すると、サービスはhttp://localhost:######で開始され、Default.htmページにリンクが表示され、Webサービスに対して行うことができるさまざまな呼び出しをテストします。Webサービスのテスト

このローカルに実行されているバージョンを別のコンピュータからテストする方法はありますか?私は、テストページ上のリンクが作るが、ローカルホストを実行しているマシンのIPアドレスで置き換えたが、それはサーバーに接続できないと言ったという呼び出しを試みた。

+0

Webサービスには通常、default.htmではなく.asmxページがあります。明確にすることはできますか? – Victor

答えて

6

組み込みVisual Studio Webサーバー(Cassini)は、ローカルマシンからのみアクセスできます。別のコンピュータからWebサービスを使用する場合は、IISにサービスを展開してからhttp://xxx.xxx.xxx.xxx/MyWebService/MyWebService.asmxにアクセスする必要があります(xxxをIPアドレスとMyWebServiceに置き換えて適切なIIS Webサイトに置き換えてください)。パス)。

テストアプリケーションを作成するには、ASP.NET WebサイトまたはWinForms/Consoleアプリケーションを作成し、Visual StudioでWebサービスリファレンスをインポートします。それはあなたのためのプロキシクラスを自動的に構築し、サービスをとても簡単に呼び出すようにします。

+0

これは、[プロジェクト] - > [ビジュアルスタジオでのデプロイメントパッケージの作成]で行いますか?以前はIISで仕事をしていませんでしたので、オンラインで良いガイドを見つけようとしています。 – John

+0

まだインストールしていない場合は、IISをインストールしてください。http://learn.iis.net/page.aspx/28/installing-iis-7-on-windows-vista-and-windows-7/ 次に、 「ビルド」 - >「パブリッシュ」を選択し、「ファイルシステム」を場所として選択し、「...」をクリックして、どこに配置するかを選択します。 [ローカルIIS]を選択し、新しいWebアプリケーションを作成します(そのウィンドウの左上隅にあるボタン)。それをターゲットとして設定して公開してください。 – rswafford

0

Visual Studioの組み込みWebサーバー(Cassini)を使用している場合、これはローカルでのみ呼び出すことができます。リモートで接続する場合は、IISをインストールして、プロジェクトを使用するように構成する必要があります。

0

はい、いいえ。あなたが組み込みのASP.NET開発サーバーを使用している場合(おそらくあなたは:####を持っているので)、私はそれが外部に連絡できるとは思わない。

しかし、ローカルIISインスタンスに "展開"することができ、それは他のコンピュータからヒットすることができます。 Webサービススタジオは、Webサービスのための優れたテストツールです。そこには、本当に良いオープンソースツールもいくつかあります。私は自分自身SoapUIが好きです。

1

サービスにアクセスできるように、コンソールアプリケーションでサービスをラップするだけです。

  1. それを(あなたのサービスがMyService多分MysServiceConsoleHostまたは一部ファクシミリ命名されている場合は)理にかなって何かに名前を付け、ソリューションの新しいコンソールアプリケーションプロジェクトを作成します。
  2. このプロジェクトには、サービスプロジェクトへの参照が含まれています。

using System; 
using System.ServiceModel; 

class Program 
{ 
    static String TITLE_TEXT = "MyService -- Console Host ({0})" + (System.Diagnostics.Debugger.IsAttached?" [DEBUG]":""); 
    static void Main(string[] args) 
    { 
    Console.Title = String.Format(TITLE_TEXT, "Not Running"); 
    try 
    { 
     ServiceHost host = new ServiceHost(typeof(MyService)); 

     Console.Title = String.Format(TITLE_TEXT, "Starting"); 
     host.open(); 

     Console.Title = String.Format(TITLE_TEXT, "Running"); 
     Console.WriteLine("Service is started, press any key to exit."); 
     Console.ReadKey(); 

     Console.Title = String.Format(TITLE_TEXT, "Closing"); 
     host.close(); 
     host = null; 
     Console.Title = String.Format(TITLE_TEXT, "Closed"); 
    } 
    catch (Exception ex) 
    { 
     Console.Title = String.Format(TITLE_TEXT, "Exception"); 
     Console.WriteLine("An error occured while running the host:"); 
     Console.WriteLine(ex.Message); 
     Console.WriteLine(); 
     Console.WriteLine(ex.StackTrace); 
     Console.ReadLine(); 
    } 
    } 
} 

、それを実行し、必要に応じてMyServiceのインスタンスを置き換えます。新しいプロジェクト(のProgram.cs)で

  • は、次のようなものを持っています。サービスのエンドポイント、実行するポートなどを指定する.configファイルがあることを確認してください。そして、誰でもあなたのサービスにアクセスできます。必要に応じて、ライブ通話中にサービスを通じてデバッグできます。

  • +0

    これはテストが必要なWebサービスなので、httpを使用してアクセスすると思います。 –

    +0

    @Andy:あなたが何を意味するか分かりません。これは、IISとまったく同じことですが、直接アクセス、テストアプリケーション、ライブ接続などのいずれかを使用してコードを実行する際に便利です。 –

    1

    Aこれには本当に簡単な解決策はlocaltunnelを使用することです:

    http://progrium.com/localtunnel/

    それはあなたのLOCALMACHINEを指すようになり、プロキシを設定し、あなたのマシンの外部からアクセスすることができます。

    0

    localhostでWebサービスをテストできます。私はコンピュータに接続されたWindows CE Motorola端末を持っています。私はVS2008をコンピュータに持っています。 私のコンピュータのアドレスはxxx.xxx.xです。xxxとwebserverはlocalhost:62209なので、端末ではWebサービスアドレス:http://xxx.xxx.x.xxx/62209/MyWebservice.asmxを使用しています。 端末がWebサーバが稼動しているコンピュータに直接接続されている可能性がありますか? とにかく、それは動作します。

    関連する問題