По какой-то причине мое веб-приложение ASP. NET возвращает ошибку 500 (очевидно, происходящую из обработчика "ExtensionlessUrlHandler-Integrated-4.0") при доступе к несуществующему маршруту.
Эта проблема начал возникать после того, как я изменил path="*."
на path="*"
в строке <add name="ExtensionlessUrlHandler-Integrated-4.0" ...
моего Web.config
файла, чтобы решить другую проблему (сбой при обработке маршрутов с точкой после последней sla sh).
Я не могу изменить path
обратно на "*."
, хотя именно это предлагается в качестве решения в другом вопросе , потому что это вернет другая проблема - маршруты с точкой в части после последнего sla sh больше не найдены.
Как и в этом связанном другой вопрос , я использую OData , Однако я не знаю, что это должно играть какую-либо роль в разрешении маршрута в моем случае вообще, потому что я думаю мы рассматриваем это как обычную библиотеку, на которую ссылаются в наших C# проектах и которая вызывается несколько наших конечных точек веб-API.
<modules runAllManagedModulesForAllRequests="true"/>
уже установлено в моем файле Web.config
.
Что еще можно сделать, чтобы 404 возвращалось для неизвестных маршрутов и маршруты "extension-ful" (т. е. маршруты, последняя часть которых после последнего sla sh содержит точку) приняты?
EDIT: мне удалось увеличить мой журнал FREB размер и теперь видим, что ошибочная запись имеет номер 1346, говоря
ModuleName = "ManagedPipelineHandler", Notification = "EXECUTE_REQUEST_HANDLER", HttpStatus = "500", HttpReason = "Внутренняя ошибка сервера", HttpSubStatus = "0", ErrorCode = "Rekursion zu tief, Stapelüberlauf. (0x800703e9)", ConfigExceptionInfo = ""
В английском sh сообщение об ошибке означает: "Слишком глубокая рекурсия, переполнение стека. "
* 104 4 * Поэтому, похоже, это та же проблема, что и в
другом вопросе , однако ответы оттуда не помогают в моем случае:
- Филипп предлагает удалить различные обработчики, что для меня ничего не меняет.
- Джо Дэвис предлагает решение с путем
"*."
, которое работает, но вызывает другое проблема , как описано выше.
Оба ответа относятся к разделу <handlers>
в моем файле Web.config
, который в настоящее время выглядит следующим образом:
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>