404 ошибка генерируется на действиях контроллера, которые используют [HttpGet] при нажатии на гиперссылку? - PullRequest
0 голосов
/ 26 июня 2018

Фон

У меня есть веб-приложение ASP.Net Core v2.0, которое имеет атрибут [HttpGet] над результатами действий, которым не нужно принимать сообщение.

Я создал электронную таблицу со списком страниц на веб-сайте для моей маркетинговой команды вместе со столбцом гиперссылок, которые ссылаются непосредственно на каждую страницу на сайте.

Пример электронной таблицы:
Example Spreadsheet

Выпуск

Как только маркетинговая команда начала нажимать на ссылки в электронной таблице, я начал получать 404 ошибки по электронной почте (настроенных с помощью NLog), хотя страница все еще загружалась для пользователя.

Поиск неисправностей

Я решил эту проблему и обнаружил, что проблема связана с атрибутом [HttpGet]. Если я уберу атрибут [HttpGet], нажатие на ссылки в электронной таблице не приведет к ошибке 404.

Сайт не генерирует 404 ошибки при загрузке страниц через браузер.

Я установил Fiddler, и похоже, что Excel использует метод «CONNECT».

Скриншот Fiddler:
Fiddler screenshot

Я думал, что это может быть проблемой, так как это не GET, но когда я открываю страницу в Chrome, он также показывает использование метода "CONNECT" в fiddler.

Я смотрю, не было ли у кого-нибудь еще этой проблемы и справились ли они с этим? Нужно ли добавить еще один атрибут рядом с [HTTPGet], чтобы остановить Excel или другое стороннее программное обеспечение, вызывающее 404?

1 Ответ

0 голосов
/ 16 августа 2018

Я решил собственную проблему.

Для всех, у кого есть эта проблема, необходимо исправить [HttpGet, HttpHead] в качестве атрибута. Если у вас есть собственный маршрут, добавьте еще один атрибут:

[Маршрут ( "[контроллер] / пользовательские действия")].

Для получения информации, я дошел до сути, используя журналы из выпадающего основного веб-сервера ASP.Net в окне вывода в Visual Studio. Я мог видеть, что когда ссылка впервые запрашивалась в Excel, она использовала метод HEAD, а не GET, поэтому была вызвана ошибка 404.

Надеюсь, что это поможет кому-то в дальнейшем.

...