3

現在コードを実行しているサーバーがWebフロントエンドサーバーであることを確認しようとしています。私はそれがこれと同じくらい簡単かもしれないと思いました:

SPServer.Local.Role.ToString().Equals("WebFrontEnd")

ただし、同じボックスでアプリサーバーなどに加えてWFEを実行している場合、これは「アプリケーション」を返し、Webフロントエンドとして正しく識別できません。

私の考えは、Microsoft SharePoint FoundationワークフローWebアプリケーション(サービス)がサーバー上で開始および実行されているかどうかを判断することです。これは、[サーバーの全体管理]>[システム設定]>[サーバー上のサービスの管理]に移動することで確認できます。

これはC#でプログラムで行う必要があります。これらのサービスとそのステータスは、実行可能なソリューションであるPowerShellを介して取得できると確信していますが、どちらの方法でも取得できるかどうかはわかりません。

編集-私は次のコードを使用して「サービス」をループする方法を知っています:

SPServiceCollection services = SPFarm.Local.Services;

foreach (SPService service in services) {

}

ただし、これには、「サーバー上のサービス」の下のリストに疑わしいほど類似しているように見えるが、すべて「オンライン」のステータスでリストされており、これが含まれていないように見えるいくつかのアイテムが含まれます。

4

2 に答える 2

4

私はチェックするマシンではありませんが、より運が良いと感じていますSPServer.Local.ServiceInstances-それは、一般的にファームではなく、特にサーバーでサービスを提供する必要があるようです.

于 2012-09-20T20:44:24.007 に答える
0

Foundation Web Application サービスは、実際にはフロント エンド サーバーではないサーバー上で実行されている可能性がある (つまり、ロード バランサーがトラフィックをフロント エンド サーバーに転送しない) ため、残念ながらこれでも信頼できません。最終的に、どのサーバーが真のフロント エンドであるかを決定するのは、負荷分散メカニズムが持つサーバーのリストです。ロード バランサーにはさまざまな種類があり、それらすべてへの単一のインターフェイスは存在しないため、保証された方法はないと思います。ファーム内の実際の Web フロント エンドの数を決定します。

于 2013-04-03T21:31:29.647 に答える