我知道在这个主题上还有一些其他类似的问题,但是它们似乎都没有答案,所以我想我们都可以在这里哈希。
我的服务器上运行了WCF服务,我试图通过覆盖“OnShutDown()”来关闭服务器时发送状态消息。
这可以看作如下:
protected override void OnShutdown()
{
try
{
client.updateInvStatus(machineName, "Client Host Has Shutdown");
}
catch (Exception ex)
{
EH.writeToErrorLog("||OnShutdown||Error Shutting Down System \r\n" + ex);
}
base.OnShutdown();
}
这似乎在50%的时间内起作用,另外50%我得到以下错误:
System.ServiceModel.Security.SecurityNegotiationException: Could not establish secure channel for SSL/TLS with authority '"ENDPOINT ADDRESS REMOVED'. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitF orReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebExceptoon webException, HttpWebRequest request, HttpAbortReason abortReason)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Ascertain.AscertainAgent.IService.updateInvStatus(String hostNM, String invValue)
at Ascertain.AscertainAgent.ServiceClient.updateInvStatus(String hostNM, String invValue) in C:\Users\daladd\Documents\CS\Ascertain\Ascertain\Ascertain\Service References\AscertainAgent\Reference.cs:line 209
at Ascertain.Service1.OnShutdown() in "FILE LOCATION REMOVED"\Service1.cs:line224
有没有人知道为什么会这样?
答案 0 :(得分:1)
我最后关注了Dr.Wily不得不说的话。我为我的连接添加了一个保持活动状态,现在代码每次都会工作。基本上,Windows在OnShutDown()方法期间不会打开任何新连接,因此如果连接超时,它将无法正常工作。
如果有人对此有所了解仍然会令人惊讶,因为使用这种方法,我将拥有与中央服务器的2000个持久连接。 Shiraz,我确实尝试更改注册表项以允许更长的超时,但时间并没有最终成为一个问题。
答案 1 :(得分:0)
这可能与关闭时间有关。如果关闭时间过长,则进程被终止。这可能发生在你身上。
尝试在此处增加超时时间:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Contro l \ WaitToKillServiceTimeout
事件日志中可能有一个事件说该进程已被终止。