Bot Framework — базовый новый бот-проект, вызывающий ошибку HTTP 403.14 — запрещено при локальной отладке?

Название говорит само за себя — у меня есть совершенно новый проект C#/.NET Bot Framework (базовый шаблон бота), загруженный из области сборки нового бота Azure Web App, который при попытке выполнить локальную отладку на моем Surface Pro 4 с VS 2017, он постоянно выдает HTTP Error 403.14 при открытии http://localhost:3984/ в Chrome или Edge. Никаких других подсказок, кроме этого. Эмулятор Local Bot Framework (предварительная версия v3 и v4) не может подключиться - просто 404.

введите здесь описание изображения

Типичные общие отладочные вещи не помогают - например. удаление bin/obj/packages, очистка папки .vs и т. д.

Типичная отладка IIS Express не помогает - например. такие вещи:

Попытался создать новый проект ASP.NET MVC - его локальный запуск в IIS Express работает нормально. Без вопросов.

Обратите внимание, что для моего решения Bot настроен документ по умолчанию (согласно скачанному решению Azure Web App Bot):

<system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="default.htm" />
      </files>
    </defaultDocument>

Примечание. Я даже не могу заставить точку останова в WebApiApplication.Application_Start() сработать:

введите здесь описание изображения

Эта точка останова никогда не достигается. Довольно озадачен в этом пункте - любые идеи?

На всякий случай это актуально - версии пакетов:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Autofac" version="3.5.2" targetFramework="net46" />
  <package id="Chronic.Signed" version="0.3.2" targetFramework="net46" />
  <package id="EntityFramework" version="6.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.Azure.DocumentDB" version="1.22.0" targetFramework="net46" />
  <package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net46" />
  <package id="Microsoft.Bot.Builder" version="3.15.2.2" targetFramework="net46" />
  <package id="Microsoft.Bot.Builder.Azure" version="3.15.2.2" targetFramework="net46" />
  <package id="Microsoft.Bot.Builder.History" version="3.15.2.2" targetFramework="net46" />
  <package id="Microsoft.Bot.Connector" version="3.15.2.2" targetFramework="net46" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net46" />
  <package id="Microsoft.Data.Edm" version="5.7.0" targetFramework="net46" />
  <package id="Microsoft.Data.OData" version="5.7.0" targetFramework="net46" />
  <package id="Microsoft.Data.Services.Client" version="5.7.0" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Logging" version="1.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.4.403061554" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocols" version="2.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="2.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Tokens" version="5.1.4" targetFramework="net46" />
  <package id="Microsoft.Net.Compilers" version="1.2.1" targetFramework="net46" developmentDependency="true" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.2" targetFramework="net46" />
  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="3.2.1" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
  <package id="System.IdentityModel.Tokens.Jwt" version="5.1.4" targetFramework="net46" />
  <package id="System.Spatial" version="5.7.0" targetFramework="net46" />
  <package id="WindowsAzure.Storage" version="7.2.1" targetFramework="net46" />
</packages>

Я пытался выполнить обновление до последних версий для каждого из этих пакетов, но, к сожалению, это привело к ужасной ошибке "Невозможно восстановить пакет Microsoft.Net.Compilers", поэтому я воздерживался от захода слишком далеко. по этому пути.


person Rob    schedule 29.07.2018    source источник
comment
Проверьте, настроен ли документ по умолчанию и существует ли файл. Примечание: в приложении бота он использует default.htm как документ по умолчанию.   -  person Fei Han    schedule 31.07.2018
comment
@Fei Han Да, он существует.   -  person Rob    schedule 31.07.2018
comment
И он настроен правильно (насколько я могу судить, согласно приведенному выше обновлению моего вопроса).   -  person Rob    schedule 03.08.2018
comment
Привет, @Rob, не мог бы ты поделиться со мной своей кодовой базой? Я хотел бы помочь вам, если я могу. На самом деле это звучит так, как будто это проблема VS, но давайте посмотрим. Мой идентификатор GH - коринагум, если вы хотите сохранить это в тайне.   -  person Corina    schedule 03.08.2018
comment
@Corina Я сейчас обновляю VS 2017, чтобы посмотреть, поможет ли это. Я убрал + анонимизировал свое решение для бота, и в процессе этого случайно скопировал его на свой рабочий стол Windows. Там нормально работает. Затем я попытался перенести полную/не анонимную версию на свой рабочий стол — и это сработало — один раз. Только один раз - как только я снова пошел его отлаживать, он мгновенно вернулся к 403/404'ингу. Это очень запутанно. Хуже того, анонимная версия моего репозитория работает нормально. Единственная разница в том, что я удалил несколько диалогов, которые, поскольку они никогда не будут запускаться, похоже, не в них проблема.   -  person Rob    schedule 03.08.2018
comment
@Corina - часть 2 - позвольте мне попытаться заставить версию анонимного бота потерпеть неудачу, и я поделюсь этим с вами. Тем временем, можете ли вы придумать какую-либо причину, по которой переход по каталогам и перемещение моего решения по моей файловой системе, кажется, позволяют ему работать (по крайней мере, один раз)? Может дело в брандмауэре Windows? Я проверил это, и все кажется довольно нормальным, поэтому я не могу придумать, что могло бы активно блокировать IIS Express, плюс, поскольку стандартное решение ASP.NET MVC отлично работает с VS 2017 в IIS Express, оно не работает. похоже, это проблема IIS Express. К сожалению, у меня закончились хорошие идеи :(   -  person Rob    schedule 03.08.2018
comment
@Rob, кое-что, что можно попробовать, если вы еще этого не сделали ... Вы пытались изменить номер порта и посмотреть, работает ли это? Кроме того, в своем браузере вы можете попробовать перейти на localhost:PORT/api/messages, что должно дать вам другое сообщение об ошибке. Просто к вашему сведению, боты на самом деле являются приложениями веб-API ASP.NET, а не проектами MVC, поэтому вы можете попробовать делая один из них. Наконец, вы пытались создать виртуальный каталог вручную в настройках вкладки «Веб» в свойствах проекта?   -  person Corina    schedule 04.08.2018
comment
@Corina - спасибо за ответ и так быстро, это очень ценно. Пробовал менять порты, к сожалению, не помогло. Я пытался создать отдельные решения WebAPI, MVC и стандартные решения ASP.NET, чтобы покрыть свои базы - все они работали без проблем / 403s / 404s.. Я попытался создать виртуальный каталог вручную на вкладке Интернет - к сожалению, это не помогло .   -  person Rob    schedule 04.08.2018
comment
@ Роб, черт... Хорошо, позволь мне продолжить мозговой штурм и вернуться к тебе.   -  person Corina    schedule 04.08.2018
comment
@Rob Быстрый вопрос, вы уже пытались создать отдельного стандартного эхо-бота без изменения кода?   -  person Corina    schedule 04.08.2018
comment
@Корина - да - и это работает. Это было основой для моего бота, к которому я добавил несколько диалогов и добавил в репозиторий Git для непрерывной доставки. Каким-то образом это привело к тому, что мое основное решение не работает при локальном запуске (в Azure оно публикуется и работает нормально).   -  person Rob    schedule 04.08.2018
comment
@Rob, этот бот был создан через Azure или вы создали его локально? Удалось ли вам развернуться до того, как вы приобрели 403/404? Кстати, вы можете поделиться со мной своим анонимным кодом, даже если он работает — это может пролить свет.   -  person Corina    schedule 04.08.2018
comment
Давайте продолжим обсуждение в чате.   -  person Corina    schedule 04.08.2018
comment
Привет, ты решил эту проблему? Мой бот, размещенный в Azure, время от времени выдает мне эту ошибку, которая очень раздражает, учитывая, что мы собираемся перейти к работе. Я хотел бы знать, есть ли постоянное решение, или мы можем просто свернуть проект и объявить фреймворк недостаточно зрелым.   -  person Masinde Muliro    schedule 24.08.2018
comment
@Masinde Muliro - к сожалению, пока нет решения для моего конкретного сценария локальной отладки. Однако я лично не видел такой же проблемы при развертывании в Azure.   -  person Rob    schedule 24.08.2018


Ответы (1)


Не могли бы вы перепроверить файл filename.bot с приведенным ниже кодом.

{
    "name": "final",
    "description": "",
    "secretKey": "",
    "services": [
        {
            "appId": "",
            "id": "xxxxx-xx-xx-xxx-xxxxx",
            "type": "endpoint",
            "appPassword": "",
            "endpoint": "http://localhost:3978/api/messages",
            "name": "http://localhost:3978/api/messages"
        }
    ]
}

(убедитесь, что вы указали http для конечной точки и имени)

person SMshrimant    schedule 29.07.2018
comment
Этот файл проверяется, все в нем правильно. Эмулятор бота — это только часть проблемы. Более фундаментальная проблема, которую я пытаюсь решить, заключается в том, почему веб-приложение, которое является ботом, продолжает выдавать ошибку 403, когда вы посещаете localhost:3984 в браузере. Что-то не работает в самом решении веб-приложения VS, и это то, что я хочу понять и исправить. - person Rob; 30.07.2018
comment
Вы пробовали выше? Если да, то сработало? На порту 3984 работает другая служба? Не могли бы вы попробовать killall -15 node, потому что kill -15 дает процессу возможность очистить себя. Вы также можете подтвердить ps aux | grep node - person SMshrimant; 02.08.2018
comment
К сожалению, нет, это не сработало. Никакая другая служба не работает/процесс, занимающий этот порт. - person Rob; 03.08.2018
comment
Это тоже не Node-бот — это C#. - person Rob; 03.08.2018