#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
Моя функция никогда не вызывается. Ошибка возникает где-то в 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 для ответа на удаленные подключения?