Итак, я создал чат-бота, используя Bot Framework SDK v4. Я тестировал его локально, и он отлично работает с эмулятором бота.

Я хочу иметь возможность разместить его в Azure и получить к нему удаленный доступ, но когда я публикую его и браузер открывает мою веб-страницу azurewebsites.net, на странице просто отображается сообщение об ошибке: При запуске приложения произошла ошибка.

Когда я смотрю на консоль, чтобы проверить ошибку, есть два запроса на ресурсы, которые не загружаются:

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.

При попытке отправить сообщение боту в Azure с помощью «Тестового веб-приложения» я получаю следующие исключения:

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>
2
Mark O'Hare 2 Дек 2018 в 01:34

1 ответ

Лучший ответ
System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\Chatbot.bot'.

Как вы развернули свой проект в Azure? Похоже, ваш файл «Chatbot.bot» не был развернут в wwwroot, который является обязательным и может включать специфические настройки бота, такие как идентификатор приложения и пароль.

ответ в соответствующем вопросе StackOverflow описывает, как загрузить файл .bot после развертывания в Visual Studio, но вы также можете просто загрузите файл вручную в wwwroot.

2
Mick 2 Дек 2018 в 11:36