我正在使用 Facebook C#sdk 将照片上传到使用 Windows 服务作为后台作业的用户配置文件。而且我几乎在我能想到的每个地方都记录了异常,并且在大多数情况下它工作正常。但偶尔,有时非常频繁,我得到以下异常,它没有被我的处理程序捕获,并被 Windows 事件记录器记录,并终止我的服务:
Application: PhotoService.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception
Stack:
at System.Net.Security._SslStream.WriteCallback(System.IAsyncResult)
at System.Net.LazyAsyncResult.Complete(IntPtr)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Net.ContextAwareResult.Complete(IntPtr)
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
从外观上看,这发生在 FacebookClient.PostTaskAsync() 方法调用中,但我不知道如何使用有限的堆栈跟踪信息进行故障排除。以下是我的照片发布方法块:
public void PostPhotoToTimeline(string filename, byte[] photo, EventHandler<FacebookApiEventArgs> callbackCompleted)
{
var _filename = filename;
var mediaObject = new FacebookMediaObject
{
ContentType = "image/jpeg",
FileName = _filename
}.SetValue(photo);
_fb.PostCompleted += callbackCompleted;
var parameters = new Dictionary<string, object>();
parameters["file"] = mediaObject;
_fb.PostTaskAsync("/me/photos", parameters);
}
我目前最大的问题是,当这个异常发生时,它会终止服务,我还没有设置服务监控,所以我无法发现服务已经停止。如果我理解正确,这个异常发生在一个单独的线程中并且没有被处理,因此它会降低整个服务。它是否正确?知道为什么会发生这种情况,在哪里,或者之前有人遇到过这个异常吗?我已经阅读了有关 'legacyUnhandledExceptionPolicy' 来捕捉这些意外异常的信息。这会阻止我的服务终止吗?使用它是个好主意吗?抱歉,如果我一口气问了太多问题,但这些都是相关的,到目前为止,谷歌还不是我的朋友。感谢您的任何帮助,您可以提供。