Я пытаюсь проверить возможность преобразования всей моей службы WCF в WebAPI, но пока это беспорядок. WCF прост, потому что вы создаете проект по умолчанию и добавляете 1 или 2 образца метода, которые возвращают что-либо, а затем добавляете в качестве службы, используя http-адрес, и он работает из коробки.
В WebAPI вы добавляете подключенную службу и вводите адрес, и он выдает ошибки, поэтому очевидно, что из коробки у него есть ошибки и не хватает вещей для реальной работы.
Мой вопрос: чего не хватает WebAPI, созданному с помощью .NET6, чтобы иметь возможность подключаться?
Следуя примеру Microsoft, я должен запустить службу, очевидно. Затем используйте путь к файлу json, сгенерированному swagger, и введите его в URL-адрес подключенных служб, дайте ему пространство имен и имя класса, и все готово.
Шаг 1: Запуск службы
Это работает, я могу вызвать основные 3 метода, которые я сделал для целей тестирования, которые возвращают string, List<string> и List<List<string>>, и я могу выполнить кнопку «проба», и они выводят все, что ему нужно.
Шаг 2. Скопируйте путь к файлу json, предоставленный Swagger.
Я предположил, что этот URL-адрес хорош по умолчанию. Я могу щелкнуть по нему, и я вижу определение, которое кажется хорошим.
Шаг 3. Создайте и очистите консольное приложение и добавьте подключенную службу.
При добавлении подключенной службы я выбираю OpenAPI, так как это единственный вариант.
Затем он запрашивает файл или URL-адрес, который я помещаю в свое значение из службы, которая работает. В данном случае это: https://localhost:44341/swagger/v1/swagger.json. Затем я выбираю пространство имен WebTest1 и имя класса WebTest2, так как мне все равно, и нажимаю «Далее».
Шаг 4: Ход настройки
Здесь у меня есть ошибка, из-за которой я вижу, что служба, которая действительно может работать, не может быть подключена к
Проверка проекта на наличие необходимых пакетов NuGet... Служба загрузки ссылка с https://localhost:44341/... ErrorFailed добавление службы использованная литература). Не удалось загрузить файл метаданных с: https://локальный:44341/.
Является ли ваш локальный хост на самом деле https://, и если да, используете ли вы самозаверяющий сертификат? Возможно, ошибка «Не удалось загрузить» возникает из-за самозаверяющего сертификата.
Я запускаю webapi с визуальной студией, используя F5. Он работает. Я могу просмотреть его и протестировать все методы на странице swagger, отображаемой в моем браузере, как я уже упоминал в вопросе. Я использую другое консольное приложение и просто пытаюсь добавить подключенный сервер, пока webapi все еще работает в другой визуальной студии.
«... я просто пытаюсь добавить подключенный сервер, пока webapi все еще работает в другой визуальной студии». Можете ли вы показать нам код, который вы используете, чтобы попытаться сделать это?
@ProdigalTechie Я не использую никакого кода. Это окно визуальной студии для добавления подключенного сервиса. вылетает это окно, показывает ошибку при нажатии далее
Попался! Я получаю сообщение об ошибке, которое вы получили, только если мой проект WebAPI не работает в Visual Studios. Я начинаю отлаживать свой WebAPI в одном окне Visual Studio, а затем открываю другое приложение в другом окне Visual Studio, когда я перехожу к подключению службы OpenAPI, которую он настраивает без ошибок.
@ProdigalTechie Итак, вы получаете ошибку при запуске WebAPI, размещенного в IIS (это то, что я понимаю из того, что вы говорите), но вы не получаете ошибок при запуске WebAPI из проекта Visual Studio. Это означает, что мы имеем инвертированный результат.
Как выглядит ваш Program.cs (или Startup.cs) для app.UseSwagger(); и app.UseSwaggerUI(); в вашем приложении WebAPI? Только если вы находитесь в определенной среде?
@ProdigalTechie да, это именно так. Все, что я сделал, это создал основной веб-API .net 6 asp.net. Дал ему имя, Удалил погодный контроллер и погодный класс в основном корне и просто создал фиктивный контроллер с 3 методами и запустил его, и все работает.





Наконец-то я разобрался с временным решением. Я также смог скопировать этот проект коллеге, и проблема та же. Проблема заключается в том, что по какой-то причине Visual Studio по умолчанию использует параметр отладки IIS Express, который правильно запускает службу, когда вы нажимаете F5, и ваш браузер открывается нормально, и вы можете проверить все. Проблема в том, что когда вы запускаете проект под IIS (фактически настроенным так, как будто это будет реальная сделка) или IIS Express (единственный параметр IIS в настройках отладки), вы не можете из другого приложения подключиться к этой службе.
Однако, если вы переключите параметр отладки на имя проекта и вместо этого запустите свой WebApi, он также будет работать, как и ожидалось, в браузере, который он открывает, но теперь вы можете фактически добавить эту службу из другого приложения без каких-либо ошибок.
Лично у меня есть третий вариант, который представляет собой WSL, который, как я «догадываюсь», является подсистемой Linux, которую я не могу сказать, так как этот сбой при попытке запуска, и нет никакой помощи для пользовательского интерфейса Visual Studio, чтобы помочь понять эти параметры меню.
Теперь у меня все еще есть проблема с подключением к одному, работающему в реальном IIS, что, вероятно, связано с той же причиной, по которой отладка IIS Express не работает. Итак, теперь я знаю, что базовый код работает, и теперь нужно выяснить, почему по умолчанию не позволяет другому приложению использовать IIS/IIS Express.
Для справки, это меню отладки, в котором опция IIS Express не работает, но выбор имени проекта, как указано на картинке, действительно работает.
Здесь просто мысли вслух. 1) У вас одновременно запущено приложение API и консольное приложение? 2) Вы просто делаете HTTP-запрос из своего консольного приложения к своему API или пытаетесь подключиться к нему другим способом? Можете ли вы добавить код своего консольного приложения? 3) Если WebAPI работает,
https://localhost:44341/должен быть правильным базовым URL-адресом, и вы должны иметь возможность попасть в конечные/api/Dataточки. Вы пытались использовать что-то вроде Postman для достижения конечных точек?