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;
}