Когда мое чистое, только что созданное новое приложение (интегрированное .net 4.0) находится на Visual Studio Web Server, все работает нормально. Ссылка, подобная приведенной ниже, работает нормально, и контроллер возвращает изображение.
http://localhost:12345/image/a.jpg
Но когда я запускаю это приложение на IIS 7.5, iis берет на себя управление и сообщает 404.
http://localhost/testmvc3/image/a.jpg
Контроллер:
public class ImageController : Controller
{
public ActionResult Index(string name)
{
var dir = Server.MapPath("~/content/" + name);
return File(dir, "image/jpg");
}
}
Маршруты:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Image", // Route name
"image/{*name}", // URL with parameters
new { controller = "Image", action = "Index", name = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Что мне следует изменить, чтобы правильно запустить это приложение?
EDIT1:
Проблема с расширением. Когда я удаляю расширение, то запрашивает точки к контроллеру изображения. С расширением (jpg) iis сначала получает запрос (почему !?) и возвращает 404 (без касания действия контроллера изображения).
EDIT2:
- IIS 7.5 в Windows 7 64-битная
- Приложение на интегрированном конвейере Framework 4.0
web.config до моих изменений:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>