我在BOT中面临间歇性问题。
我有两个使用c#和BOT Framework V4编写的机器人,它们都是相同的,并且都托管在IIS上。
而且我还托管了两个WebChat Node.js应用程序,并且它们都是相同的。
我对两个机器人有两个不同的Azure注册。
[一个机器人不断抛出问题,并且间歇性地停止工作。然后,我们必须回收其应用程序池以使其重新启动。
服务器:Windows Server 2012 R2IIS:8.5.9600
错误在下面给出,
fail: EnterpriseTestBot.Startup[0]
Exception Occured :-> The operation was canceled.----- at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Bot.Connector.Conversations.ReplyToActivityWithHttpMessagesAsync(String conversationId, String activityId, Activity activity, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Bot.Connector.ConversationsExtensions.ReplyToActivityAsync(IConversations operations, String conversationId, String activityId, Activity activity, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.BotFrameworkAdapter.SendActivitiesAsync(ITurnContext turnContext, Activity[] activities, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass22_0.<<SendActivitiesAsync>g__SendActivitiesThroughAdapter|1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.Bot.Builder.TurnContext.SendActivityAsync(IActivity activity, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.TemplateManager.TemplateManager.ReplyWith(ITurnContext turnContext, String templateId, Object data)
at EnterpriseTestBot.Dialogs.Main.MainDialog.OnStartAsync(DialogContext dc, CancellationToken cancellationToken) in D:\Test\BOT\Enterprise_BOT\EnterpriseTestBot\Dialogs\Main\MainDialog.cs:line 101
at EnterpriseTestBot.Dialogs.Shared.RouterDialog.OnContinueDialogAsync(DialogContext innerDc, CancellationToken cancellationToken) in D:\Test\BOT\Enterprise_BOT\EnterpriseTestBot\Dialogs\Shared\RouterDialog.cs:line 35
at Microsoft.Bot.Builder.Dialogs.ComponentDialog.BeginDialogAsync(DialogContext outerDc, Object options, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.Dialogs.DialogContext.BeginDialogAsync(String dialogId, Object options, CancellationToken cancellationToken)
at EnterpriseTestBot.EnterpriseTestBot.OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) in D:\Test\BOT\Enterprise_BOT\EnterpriseTestBot\EnterpriseTestBot.cs:line 96
at EnterpriseTestBot.Middleware.GetSetUserDataMiddleware.OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken) in D:\Test\BOT\Enterprise_BOT\EnterpriseTestBot\Middleware\GetSetUserDataMiddleware.cs:line 98
at Microsoft.Bot.Builder.AutoSaveStateMiddleware.OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken)
at EnterpriseTestBot.Middleware.SetLocaleMiddleware.OnTurnAsync(ITurnContext context, NextDelegate next, CancellationToken cancellationToken) in D:\Test\BOT\Enterprise_BOT\EnterpriseTestBot\Middleware\SetLocaleMiddleware.cs:line 49
at Microsoft.Bot.Builder.MiddlewareSet.ReceiveActivityWithStatusAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.BotAdapter.RunPipelineAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken)-----System.IO.IOException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request. ---> System.Net.Sockets.SocketException: The I/O operation has been aborted because of either a thread exit or an application request
--- End of inner exception stack trace ---
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
at System.Net.Http.HttpConnection.ReadBufferedAsyncCore(Memory`1 destination)
at System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken)
at System.Net.FixedSizeReader.ReadPacketAsync(Stream transport, AsyncProtocolRequest request)
at System.Net.Security.SslState.ThrowIfExceptional()
at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__47_1(IAsyncResult iar)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
info: Microsoft.Bot.Builder.Integration.IAdapterIntegration[0]
Sending activity. ReplyToId: 5Ly5VgcOJHH
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 POST http://TestBot.MyCompany.com/ATOM/api/messages application/json; charset=utf-8 377
info: Microsoft.Bot.Builder.Integration.IAdapterIntegration[0]
Received an incoming activity. ActivityId: 6WV3KIRaT3y
info: Microsoft.Bot.Builder.Integration.IAdapterIntegration[0]
Sending activity. ReplyToId: 6WV3KIRaT3y
这种特殊问题需要在GitHub(https://github.com/microsoft/botbuilder-dotnet)上提出,因为这将特定于您的机器人。