Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ping WCF数据服务或WCF服务_C#_.net_Performance_Wcf_Wcf Data Services - Fatal编程技术网

C# Ping WCF数据服务或WCF服务

C# Ping WCF数据服务或WCF服务,c#,.net,performance,wcf,wcf-data-services,C#,.net,Performance,Wcf,Wcf Data Services,我调查了一件坏事,假设我们有一个数据服务,我们想在消费者端调用它,例如: Uri dataManURI = new Uri("http://localhost:2040/DTService.svc/rest"); DataServiceContext dataServiceContext = new DataServiceContext(dataManURI); var all = from ex in dataServiceContext.CreateQuery<ExternalP

我调查了一件坏事,假设我们有一个数据服务,我们想在消费者端调用它,例如:

 Uri dataManURI = new Uri("http://localhost:2040/DTService.svc/rest");
 DataServiceContext dataServiceContext = new DataServiceContext(dataManURI);
 var all = from ex in dataServiceContext.CreateQuery<ExternalPath_DTO>("ExternalPaths")
                                                      select ex;
因此,如果服务不可用,捕获异常需要很长时间,我认为如果我将
receivetimeout
设置为
00:01:00
,则需要1分钟才能知道操作超时

在另一端,用户界面被冻结,直到响应(在我的情况下,1分钟获得失败响应)

如果是,这些解决方案有用吗?但如何使用

1-定义一个简单的操作,例如
Ping()
,并在任何主操作之前调用它

   AuthClient ac = new AuthClient("authEndPoint", Token);
   var watch = System.Diagnostics.Stopwatch.StartNew();
   var ping = Task.Run(() =>
   {
      ac.Ping();
   });
   try
   { 
     if (!ping.Wait(ac.Endpoint.Binding.OpenTimeout))
       {
          //Timeout on Ping for end point
           watch.Stop(); 
           return;
        }
   }
   catch (Exception exp)
    {
      watch.Stop(); 
      return;
    }
我的期望是在3秒内得到响应(打开超时),我认为如果
Ping()
无法在3秒内回复,则该服务不可用

2-远程登录服务

解决方案1:如果没有任务编程和
,我认为解决方案1不合适!ping.Wait(ac.Endpoint.Binding.OpenTimeout)
,由于我上面的解释,如果服务不可用,则表示操作超时需要1分钟(端点接收时间)

解决方案2:如何,实例

有没有其他机制可以很快知道服务是否可用

任何帮助都将不胜感激。

你试过吗

网站管理员面临的一个常见问题是需要为web应用程序执行初始化任务和“预热”任务。更大、更复杂的web应用程序可能需要执行长时间的启动处理、启动内存缓存、生成内容等。。。在服务第一个HTTP请求之前

IIS 8.0应用程序初始化功能使网站管理员能够将IIS 8.0配置为主动执行一个或多个web应用程序的初始化任务

我一直面临着类似的问题——但没有那么多(1分钟以上)。通常IIS初始化需要几秒钟(10~20秒),因此操作回收间隔(默认1740分钟)和空闲超时(默认20分钟)可能会改善您的服务。

您尝试过吗

网站管理员面临的一个常见问题是需要为web应用程序执行初始化任务和“预热”任务。更大、更复杂的web应用程序可能需要执行长时间的启动处理、启动内存缓存、生成内容等。。。在服务第一个HTTP请求之前

IIS 8.0应用程序初始化功能使网站管理员能够将IIS 8.0配置为主动执行一个或多个web应用程序的初始化任务


我一直面临着类似的问题——但没有那么多(1分钟以上)。通常IIS初始化需要几秒钟(10~20秒),因此操作回收间隔(默认为1740分钟)和空闲超时(默认为20分钟)可能会改善您的服务。

“唤醒服务”或“ping服务以查看其是否处于活动状态”是XY问题。您的实际问题是“调用服务时,客户端会超时”,因此请修复该问题。调查服务响应时间过长的原因。它很可能已经启动并运行,当您ping它时,它会愉快地响应,但您打算执行的操作仍然会超时,因为它会访问性能较差的数据库或其他任何东西。我知道这可能是因为网络问题,而不是代码性能或与我的代码相关的任何事情……“唤醒服务”或“ping服务以查看它是否处于活动状态”是XY问题。您实际的问题是“调用服务时,客户端会超时”,所以请解决这个问题。调查服务响应时间过长的原因。它很可能已经启动并运行,当您ping它时,它会愉快地响应,但您打算执行的操作仍然会超时,因为它会访问性能较差的数据库或其他任何东西。我知道这可能是因为网络问题,而不是代码性能或任何与我的代码相关的问题。。。
   AuthClient ac = new AuthClient("authEndPoint", Token);
   var watch = System.Diagnostics.Stopwatch.StartNew();
   var ping = Task.Run(() =>
   {
      ac.Ping();
   });
   try
   { 
     if (!ping.Wait(ac.Endpoint.Binding.OpenTimeout))
       {
          //Timeout on Ping for end point
           watch.Stop(); 
           return;
        }
   }
   catch (Exception exp)
    {
      watch.Stop(); 
      return;
    }