0

Azureで実行することを目的としたWCFWebサービス( Webサイトではなく、JSON over HTTPのみ)を作成しました。テストを書く必要があります。

私はこれを行う方法を知っていますが、それは素人っぽいようです:

  1. Webサービスを実行し、
  2. ルートURLをコピーします(例http://localhost:81/
  3. ルートURLをテストプロジェクトに適用します。
  4. テストプロジェクトを実行します。

私はこれを行うことができるようにしたいと思います:

  1. F5を押す
  2. ->Webサービスの実行が開始されます
  3. ->テストの実行が開始され、IISがサービスの実行を決定した場所が自動的に検出されます。

方法はありますか?

4

2 に答える 2

1

これを行うには2つの方法があります。Windows Azureを使用しているので、エミュレーターを使用していると思います。エミュレーターを使用すると、RoleEnvironmentが使用可能になり、使用可能なロール、それらのインスタンス、およびそれらのエンドポイントのリストを取得できます。

var endpoint = RoleEnvironment.Roles["WebRole1"].Instances.First().InstanceEndpoints["Endpoint1"];
var siteUrl = String.Format("{0}://{1}", endpoint.Protocol, endpoint.IPEndpoint);

このコードは、WebRole1という名前のロールを取得し、このロールの最初のインスタンスを取得し(これを使用して、Webサービスが負荷分散をサポートしているかどうかをテストできます)、InstanceEndpointを取得します。インスタンスエンドポイントは、プロトコル(http / https)やIP /ポート(これらはServiceConfigurationで構成するもの)など、必要なすべての情報を提供します。

:これは、エミュレーターの外部で実行されているプロセス(テストプロジェクトなど)でも機能します。実行する必要があるのは、Microsoft.WindowsAzure.ServiceRuntimeを参照することだけです。

さらに、 ServerManagerクラスを使用して、IISで実行されている現在のサイトを見つけることもできますが、IIS Expressで実行している場合はこれが機能しないと思います(Azureを使用している場合も可能です)。 。

于 2012-07-25T09:40:05.290 に答える
0

WCF プロジェクトのポート番号を修正します。プロジェクトのプロパティに移動し、「動的ポートを使用する」を false に設定してから、81 などの固定番号を指定します。

ソリューションで複数のスタートアップ プロジェクトを指定します。ソリューションでマウスの右ボタンをクリックします。[スタートアップ プロジェクトの設定] を選択し、[複数のスタートアップ プロジェクト] ラジオボタンをオンにして、スタートアップ リストに WCF サービス プロジェクトを含めます。

これがあなたのニーズを満たすことを願っています...

于 2012-07-25T09:12:52.853 に答える