#asp.net-mvc-3 #model-view-controller #odata
#asp.net-mvc-3 #модель-представление-контроллер #odata
Вопрос:
Я использую OData в качестве API в приложении. Одна из моих таблиц базы данных имеет уникальный идентификатор, который содержит точки (.) Я пытаюсь получить доступ к записям в этой таблице, используя следующее соглашение:
http://foo.bar.com/services/v001.svc/Categories («A.B.C»)
.. но я постоянно получаю следующую ошибку:
Контроллер для пути ‘/services/v001.svc / Categories (‘A.B.C’)’ не найден или не реализует IController.
Сначала я думал, что это связано с неправильной конфигурацией в моих маршрутах, но я удалил все пользовательские маршруты и все равно получаю ту же ошибку. Доступ ко всем другим записям во всех таблицах в моей базе данных через одно и то же соглашение uri работает просто отлично. Единственное различие между этими записями и всеми остальными заключается в том, что я использую точку в столбце уникального идентификатора.
Помогите!
Ответ №1:
Проблема в том, что у Cassini (веб-сервер разработки в Visual Studio) возникла проблема с обработкой периодов в URL. Решение состоит в том, чтобы изменить свойства проекта, чтобы использовать локальный веб-сервер IIS вместо использования Cassini. Для этого:
- Правый клик в вашем проекте
- Нажмите «Свойства»
- Перейдите на вкладку «Веб»
- Измените настройки в разделе «Сервер» на «Использовать локальный веб-сервер IIS» и установите флажок «Использовать IIS Express»
- Следуйте инструкциям для создания виртуального каталога и т. Д.
- В следующий раз при отладке ваше приложение должно быть запущено в локальной установке IIS, и теперь URL-адреса должны обрабатываться правильно.
Это, конечно, предполагает, что на вашем ПК установлен IIS. Почему Cassini не любит точки, а full IIS любит? Кто знает?