Я использую MVC 3, Visual Studio 2010 (и его встроенный веб-сервер разработки) для локальной сборки.
Я развертываюсь на машине IIS6 Win2003.
Итакпока что все мои MVC3 работали отлично
Я добавил этот метод маршрутизации в свой Global.asax:
routes.Add("ImagesRoute",
new Route("ViewFolderName/ActionName/Images/{filename}", new ImageRouteHandler()));
Это так, чтобы я мог вызвать URL: http: // server/ViewFolderName/ActionName/Images/image.gif и перенаправить его в другое физическое местоположение на веб-сервере (то есть в моей папке content \ images)
Я сократил свою функцию ImageRouteHandler до этой:
public class ImageRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.HttpContext.Response.Write(requestContext.RouteData.Values["filename"] as string);
requestContext.HttpContext.Response.End();
return null;
}
}
(Моя полная функция на самом деле делает больше, чем возвращает ответ строки, но это показывает проблему в ее простейшей форме)
ЛОКАЛЬНО (VS2010 и его веб-сервер dev):
Я могу позвонить по любому желаемому пути и увидеть текстовую строку, возвращаемую на экран (конечно, фактический файл не должен существовать, поскольку мы никогда не заходим так далеко!)
http : //server/ViewFolderName/ActionName/Images/image.gif
http : //server/ViewFolderName/ActionName/Images/image
http : //server/ViewFolderName/ActionName/Images/image.gif.a.b.c
но не заканчивается точкой:
http : //server/ViewFolderName/ActionName/Images/image.
LIVE (IIS6 on Сервер Win 2003):
На IIS6 я могу успешно назвать этот путь:
http : //server/ViewFolderName/ActionName/Images/image
, но я не могу успешно вызвать URL с точкой внутри, например:
http : //server/ViewFolderName/ActionName/Images/image.gif
Я полагаю, это должно быть как-то связано с тем, как .NET4 Routing работает на IIS6?Спасибо