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 身份验证的安全绑定。第二个猜测是您没有运行连接到域的这台机器,因此调用需要一些时间来获取凭据来确定 AD 控制器不存在。

即使机器没有连接到域,WCF 也会调用函数来尝试获取 Windows 凭据,就好像 MACHINEName\UserName 的 MACHINEName 实际上是一个域一样。一旦失败,代码会将 MACHINEName 视为机器名称。此故障转移通常需要 3-4 秒。

当然,我可能会走得更远,但我想我会猜测一下。

于 2012-12-06T20:54:45.830 回答