Проблема маршрутизации MVC3 на IIS 6 с любым путем, содержащим точку - PullRequest
1 голос
/ 19 апреля 2011

Я использую 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?Спасибо

...