У меня есть довольно прямо вперед API проекта Web, который имеет следующий маршрут по умолчанию на маршруте в WebApiConfig.cs:Web API вложенных ресурсов неудачу под IIS8
config.Routes.MapHttpRoute(
name: "ChildApi",
routeTemplate: "api/{parentController}/{parentId}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Это отлично работает под управлением операционной системы на сервере разработки VS2012 и переход к моему тестовому URI (/api/team/1/entries/2013-04-19
) возвращает правильные результаты. После того, как я публикую это и пытается получить доступ к той же URI, используя IIS8, я получаю следующее сообщение об ошибке 404:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Most likely causes:
The directory or file specified does not exist on the Web server.
The URL contains a typographical error.
A custom filter or module, such as URLScan, restricts access to the file.
Things you can try:
Create the content on the Web server.
Review the browser URL.
Create a tracing rule to track failed requests for this HTTP status code and see which module is calling SetStatus. For more information about creating a tracing rule for failed requests, click here.
Detailed Error Information:
Module IIS Web Core
Notification MapRequestHandler
Handler StaticFile
Error Code 0x80070002
Все невложенных маршруты (например, /api/team/1
) работают нормально, но мне кажется, что именно этот маршрут интерпретируется как статический файл, и IIS пытается его обслуживать как таковой? Кто-нибудь еще видел/разрешал эту проблему раньше?