ASP.NET MVC UrlHelper.GenerateUrl исключение : «Невозможно использовать начало .. для выхода из верхнего каталога»

Я использую модуль перезаписи IIS 7 для перезаписи входящего URL-адреса, например:

http: // server / year / all

на

http: // server / application / controller / year / all

Все работает нормально, кроме тех случаев, когда при обработке перезаписанного запроса я использую MVC UrlHelper. Метод GenerateUrl ():

UrlHelper.GenerateUrl(
   "Assets",
   "Css",
   "Asset",
   new RouteValueDictionary(new { site = site.Name, assetPath = assetPath }),
   RouteTable.Routes,
   controllerContext.RequestContext,
   false);

Вызов этого метода приводит к HttpException:

System.Web.HttpException: Cannot use a leading .. to exit above the top directory.
   at System.Web.Util.UrlPath.ReduceVirtualPath(String path)
   at System.Web.Util.UrlPath.Reduce(String path)
   at System.Web.VirtualPath.Combine(VirtualPath relativePath)
   at System.Web.VirtualPathUtility.Combine(String basePath, String relativePath)
   at System.Web.Mvc.PathHelpers.GenerateClientUrlInternal(HttpContextBase httpContext, String contentPath)
   at System.Web.Mvc.PathHelpers.GenerateClientUrl(HttpContextBase httpContext, String contentPath)
   at System.Web.Mvc.UrlHelper.GenerateUrl(String routeName, String actionName, String controllerName, RouteValueDictionary routeValues, RouteCollection routeCollection, RequestContext requestContext, Boolean includeImplicitMvcValues)

Глядя на RequestContext, кажется, что все пути запроса верны (т. Е. Имеют перезаписанные значения). Кажется, я не могу понять, почему он пытается выйти из каталога верхнего уровня ... Мы не используем нигде .... в пути.

Я также убедился, что RewriteModule находится над Модуль UrlRouting в IIS.

Хотя я могу перейти к методам фреймворка, я не могу проверить какие-либо локальные переменные (в VS или WinDbg), потому что они оптимизированы для компилятора.

Есть мысли?

17
задан Paul Kearney - pk 29 September 2010 в 22:18
поделиться