【发布时间】:2024-04-20 13:55:02
【问题描述】:
您好,我想在现有的 WebAPI 服务中实现“一劳永逸”的任务。下面的代码只是将一个日志事件(可能是客户端已连接到服务以执行某些任务)发送到另一个服务,如果失败,则不应向客户端返回错误。
我只是想记录并忘记异常,这意味着服务将继续执行原始任务。
我用过 continuewith,想知道这是否是正确的做法。
Task.Factory.StartNew(() =>
{
var client = (HttpWebRequest) WebRequest.Create(_url);
client.Method = "POST";
client.ContentType = "application/json";
var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(log));
var requestStream = client.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
var response = client.GetResponse();
requestStream.Close();
response.Close();
}).ContinueWith((ca) =>
{
if (ca.Exception != null)
{
_logger.LogException(LogLevel.Error, ca.Exception.Message, ca.Exception);
}
}, TaskContinuationOptions.OnlyOnFaulted);
另外,我也认为我可以这样做,即不使用延续。
Task.Factory.StartNew(() =>
{
try
{
var client = (HttpWebRequest) WebRequest.Create(_url);
client.Method = "POST";
client.ContentType = "application/json";
var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(log));
var requestStream = client.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
var response = client.GetResponse();
requestStream.Close();
response.Close();
}
catch(Exception e)
{
_logger.LogException(LogLevel.Error, e.message, e)
}
})
在此致谢
【问题讨论】:
-
您应该尝试将此问题发布到codereview.stackexchange.com
-
感谢您的建议,我已经这样做了。
标签: c# .net wcf exception task