因此,我一直在使用Bot Framework SDK v4创建聊天机器人。我已经在本地对其进行了测试,并且可以与Bot仿真器一起很好地工作。
我希望能够在Azure上托管它并进行远程访问,但是当我发布它并且浏览器打开我的azurewebsites.net网页时,该页面仅显示一条错误消息,指出启动该应用程序时发生了错误
。当我查看控制台以检查错误时,有2个请求无法加载资源:
Failed to load resource: the server responded with a status of 500 (Internal Server Error) /favicon.ico:1
Failed to load resource: the server responded with a status of 500 (Internal Server Error) (index):1
这是我第一次使用或发布某些内容到Azure,所以我对此不太熟悉。据我所知,这些名称下的本地目录中没有任何文件,而且我不确定如何解决此问题。
关于导致此问题的原因是什么?如果需要,我可以提供更多代码。
编辑 我从Application Insights和Kudu收集了更多信息。
当尝试使用'Test Web App'向Azure中的bot发送消息时,我抛出了以下异常:
System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\Chatbot.bot'.
File name: 'D:\home\site\wwwroot\Chatbot.bot'
at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.File.OpenText(String path)
at Microsoft.Bot.Configuration.BotConfiguration.<LoadAsync>d__31.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Configuration.BotConfiguration.Load(String file, String secret)
at ChatBotProject.Startup.<>c__DisplayClass6_0.<ConfigureServices>b__0(BotFrameworkOptions options) in C:\Users\Marko\Documents\Project\ChatBotProject\ChatBotProject\Startup.cs:line 47
at Microsoft.Extensions.Options.ConfigureNamedOptions`1.Configure(String name, TOptions options)
at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
at Microsoft.Extensions.Options.OptionsManager`1.<>c__DisplayClass5_0.<Get>b__0()
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
at Microsoft.Extensions.Options.OptionsManager`1.Get(String name)
at Microsoft.Extensions.Options.OptionsManager`1.get_Value()
at Microsoft.Bot.Builder.Integration.AspNet.Core.ApplicationBuilderExtensions.UseBotFramework(IApplicationBuilder applicationBuilder)
at ChatBotProject.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in C:\Users\Marko\Documents\Project\ChatBotProject\ChatBotProject\Startup.cs:line 122
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
at Microsoft.AspNetCore.ApplicationInsights.HostingStartup.ApplicationInsightsLoggerStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
at Microsoft.ApplicationInsights.AspNetCore.ApplicationInsightsStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Server.IISIntegration.IISSetupFilter.<>c__DisplayClass3_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
此外,通过检查Kudu中的日志,该html对可能的原因进行了描述:
<fieldset>
<h4>Most likely causes:</h4>
<ul>
<li>IIS received the request; however, an internal error occurred during the processing of the request. The
root cause of this error depends on which module handles the request and what was happening in the worker
process when this error occurred.</li>
<li>IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS
permissions are set incorrectly.</li>
<li>IIS was not able to process configuration for the Web site or application.</li>
<li>The authenticated user does not have permission to use this DLL.</li>
<li>The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.</li>
</ul>
答案 0 :(得分:2)
System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\Chatbot.bot'.
您如何将项目部署到Azure?看来您的“ Chatbot.bot”文件未部署到wwwroot,这是必需的,并且可能包括特定于机器人的设置,例如“应用程序ID”和“密码”。
与StackOverflow相关的问题中的answer描述了在Visual Studio中进行部署后如何上传.bot文件,但是您也可以手动将文件上传到wwwroot。