0

コンソール アプリがホストする WCF サービスを試しています。すべて順調ですが、タイミング...

コンソール アプリの WCF は、次のコードで開始します。

    ServiceHost host = new ServiceHost(typeof(DeviceService));

    public void StartServiceHost()
    {
        Console.ForegroundColor = ConsoleColor.Yellow;
        Console.WriteLine(DateTime.Now.ToString() + " ServiceHost is opened");
        host.Open();
        Console.ForegroundColor = ConsoleColor.Green;
    }

メソッドの他の WCF サービス (SL アプリにデータを送信するために使用) で、このサービスをコードで呼び出します。

DeviceCacheService.DeviceServiceClient client = new DeviceCacheService.DeviceServiceClient();
List<Telemetry.Models.Device.DeviceModel> models = client.DEVICE_Get().ToList();

最後のコードが最初のサービスへのリクエストを作成すると、次の行が 3 ~ 4 秒後に処理されます。ブレークポイントを設定してみました-サービスメソッドの呼び出しと ConsoleAppWCF サイドコードの開始の間で、2〜3秒かかりました。

私は何を間違っていますか?

4

1 に答える 1

0

アプリ (サーバーと SL) からバインディング情報を追加してください。

つまり、サイキック デバッグは、Windows 認証を使用するセキュリティで保護されたバインドを使用していることを示しています。2 番目の推測は、ドメインに接続されたこのマシンを実行していないため、資格情報を取得するための呼び出しで AD コントローラーが存在しないことを確認するのに少し時間がかかっていることです。

マシンがドメインに接続されていない場合でも、WCF は、MACHINEName\UserName が MACHINEName が実際にドメインであるかのように、Windows 資格情報を取得しようとする関数を呼び出します。それが失敗すると、コードは MACHINEName をマシン名として扱います。このフェールオーバーには 3 ~ 4 秒が一般的です。

もちろん、私はかなり外れているかもしれませんが、推測してみたいと思いました。

于 2012-12-06T20:54:45.830 に答える