これを行うには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を使用している場合も可能です)。 。