asp.net основная проблема маршрутизации ошибка http 500

#asp.net-core #routes

Вопрос:

Я пытаюсь смоделировать веб-сервис arcgis и создал простой ASP.NET Приложение MVC.

Мой сайт использует сопоставление маршрутов по умолчанию

 app.MapControllerRoute(  name: "default",  pattern: "{controller=Home}/{action=Index}/{id?}");  

Мой контроллер определен как этот без определенного маршрута

public class ESRIController : Controller

Мой метод в контроллере определяется как

 [Route("/arcgis/rest/services/{serviceName}/FeatureServer/{layerId}")] public IActionResult FeatureServerLayer(string serviceName, int layerId, Dictionarylt;string, Microsoft.Extensions.Primitives.StringValuesgt;? queryString) {}  

Если я назову этот метод так, то проблем не возникнет

 http://localhost:5047/arcgis/rest/services/Landsdowne/FeatureServer/0  

Но если функция вызывается таким образом, это приводит к ошибке сервера HTTP 500

 http://localhost:5047/arcgis/rest/services/Landsdowne/FeatureServer/0?f=json  

Ошибка http500server

Моя функция никогда не вызывается. Ошибка возникает где-то в ASP.NET Время выполнения ядра.

Использование Chrome для просмотра запроса также не показывает дополнительной информации.

Выход Хрома

В chrome нет другого ответа, отображаемого.

Комментарии:

1. В чем заключается ошибка при отладке в Visual Studio?

2. В любом случае, почему вы думаете, что добавление этого: f=json сработает?

3. f=json-это то, что arcgis javascript добавляет в URL-адрес при вызове моего кода.

4. В Visual Studio не возникает ошибок. Мой метод никогда не вызывается. Я предполагаю, что ошибка используется средой выполнения .net core

5. Вы можете определить точку останова при внедрении mvc, который запускает 500

Ответ №1:

Одна вещь, о которой я не упомянул в первоначальном посте, заключалась в том, что это было приложение .NET Core 6 под управлением Visual Studio 2022.

Я создал новое приложение .NET Core 5, и ошибка не вызвана, и мой метод вызывается правильно.

Я создал еще одно новое приложение .NET CORE 6 MVC, и ошибка не возникает, и мой метод вызывается правильно.

Единственное различие между двумя приложениями, которые работают, и тем, которое не работает, заключается в том, что то, которое не работает, размещено в IIS на моей машине разработки (не IIS Express). Ранее я установил пакет хостинга .NET Core 6, чтобы я мог выполнять отладку с удаленной машины через IIS, чего я не мог сделать с IIS Express.

Так что, похоже, во всем может быть виноват хостинг IIS. Мне нужно будет протестировать на рабочем сервере, чтобы определить, будет ли это по-прежнему проблемой.

Но мне нужно, чтобы он был размещен в IIS на моей машине разработчика, так как API arcgis rest вызывается из Интернета, а моя машина разработчика находится внутри корпоративного брандмауэра. Я использую NGROK в качестве туннеля из Интернета на свою машину. Может быть, я могу настроить IIS для ответа на удаленные подключения?