Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
Asp.net silverlight应用程序关闭时,异步WCF调用并不总是成功_Asp.net_Wcf_Silverlight - Fatal编程技术网

Asp.net silverlight应用程序关闭时,异步WCF调用并不总是成功

Asp.net silverlight应用程序关闭时,异步WCF调用并不总是成功,asp.net,wcf,silverlight,Asp.net,Wcf,Silverlight,我有一个silverlight应用程序在浏览器中运行,作为整个ASP.NET网站的一部分。我正在用它记录一些事件(跟踪一些UI点击事件等等) 我设置了一个WCF服务来创建DB日志记录,显然Silverlight应用程序正在异步调用它 这一切都很好,直到我尝试在应用程序生命的最后一刻打电话给日志服务。也就是说,当用户单击某个按钮时,silverlight会调用网站上的一些javascript重定向到另一个页面,因此silverlight应用程序会关闭,然后只有最后的记录器调用才会通过 我假设这与s

我有一个silverlight应用程序在浏览器中运行,作为整个ASP.NET网站的一部分。我正在用它记录一些事件(跟踪一些UI点击事件等等)

我设置了一个WCF服务来创建DB日志记录,显然Silverlight应用程序正在异步调用它

这一切都很好,直到我尝试在应用程序生命的最后一刻打电话给日志服务。也就是说,当用户单击某个按钮时,silverlight会调用网站上的一些javascript重定向到另一个页面,因此silverlight应用程序会关闭,然后只有最后的记录器调用才会通过

我假设这与silverlight的关闭过程有关,这是一个时间问题,有时WCF通道仍然打开,消息通过,有时通道关闭,日志记录不发生

无论日志记录是否发生,最后一次记录器调用都不会触发回调

作为最后一次关闭单击事件处理程序的一部分,silverlight应用程序调用以下内容:

System.Windows.Browser.HtmlPage.Window.Eval("ViewEmployersPageWithMenu();")
据我所知,当浏览器离开silverlight应用程序时,它将触发silverlight应用程序的退出

在执行此操作之前,我对异步wCF服务发出了一个简单的记录器调用


我相信silverlight在退出处理期间不允许异步服务调用,是这样吗?如果在应用程序关闭之前,我应该以不同的方式来处理这个问题,以便成功地调用日志?

如果日志记录非常重要,并且被认为是应用程序不可或缺的一部分,那么您可以推迟调用JavaScript函数,直到回调日志记录请求。它可能会在重定向的执行中造成一些延迟,因为它现在正在等待WCF请求往返,但这可能比丢失日志更好

如果您可以复制这个问题,我很好奇Fiddler在工作时与不工作时如何看待一系列请求(记录请求和重定向请求)。这可能表明浏览器在执行重定向时正在取消日志请求