说Rest服务有一个请求,它打电话给另一个服务(电子邮件服务), 但是当Rest服务得到另一个请求给电子邮件服务的请求时,我希望它跳过这一步。
休息服务应该足够智能,以便在停止任何下一个休息服务请求被允许呼叫电子邮件服务时,查看电子邮件进程是否正在运行或停止。
休息方法: -
void SaveDataAndCallEmailService(Data data)
{
cntx.Add(data);
cntx.SaveChanges();
SendEmail();
}
现在我的查询是如何只在电子邮件进程未运行时才调用“SendMail()”方法一次。
例如: -
void SaveDataAndCallEmailService(Data data)
{
cntx.Add(data);
cntx.SaveChanges();
if(!EmailProcessIsRunning)
SendEmail();
EmailProcessIsRunning= true;
}
修改: -
现在,“EmailProcessIsRunning”始终为false,即使我将其标记为true。
当服务器收到第二个请求时,我发现“EmailProcessIsRunning”再次为false。
如何坚持它的价值?
答案 0 :(得分:1)
在您的代码示例中,EmailProcessIsRunning
未在任何地方定义。如果存在范围问题则更难以确定。
假设没有范围问题,如果您希望在无状态webapi服务器上的请求之间保存保存到EmailProcessIsRunning
的值,则需要向服务器添加DependecyResolver。阅读本文以获取更多信息http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver
编辑:(更简单的答案)
您可以向类添加静态属性,并在启动进程时将其设置为true。
e.g。
public bool static EmailProcessIsRunning { get; set; }