Обратный прокси-сервер IIS вводит «Не удается использовать ведущий .. для выхода из верхнего каталога» в определенных случаях - PullRequest
1 голос
/ 12 июля 2011

Итак, как и несколько миллионов других людей, у нас есть веб-приложение ASP.NET MVC с настраиваемой страницей 404 - в нашем случае / Errors / NotFound.Недавно мы перенесли сайт за обратный прокси-сервер IIS 7.5 по нескольким причинам.Обычно это работает отлично, за исключением одного странного случая - ошибки 1-го уровня 404 генерируют исключение HttpException для «Не удается использовать ведущий .. для выхода из верхнего каталога».но только когда пробито через прокси.Значение:

a) http://example.com/not/a/page возвращает правильную страницу ошибки 404.
b) http://example.com/not-a-page получает желтый экран смерти за вышеупомянутую ошибку.
c) если я пропущу прокси и перейду к http://10.1.1.80/not-a-page, то получу правильную страницу ошибки 404.

Я кое-что нашел в исключении и начинаю думать, что ошибка исходит от нашегоссылка на наше частичное представление ScriptInclude.aspx с главной страницы, но, похоже, он не начинает выполнять этот элемент управления из того, что я могу сказать.Любые идеи?

ОБНОВЛЕНИЕ

Немного больше возился, теперь проблема изолирована до вызова Url.Action или действительно базовой трассировки стека здесь:

[HttpException (0x80004005): Невозможно использовать начальный .. для выхода из верхнего каталога.] System.Web.Util.UrlPath.ReduceVirtualPath (String path) +8857926 System.Web.Util.UrlPath.Reduce (Stringпуть) + 52
System.Web.Util.UrlPath.Combine (строковый appPath, строковый базовый путь, строковый относительный) +217 System.Web.VirtualPath.Combine (виртуальный относительный путь) +130 System.Web.VirtualPath.Combine (виртуальный путьv1, VirtualPath v2) +53 System.Web.VirtualPathUtility.Combine (String basePath, StringlativePath) + 39
System.Web.Mvc.PathHelpers.MakeAbsolute (Строка basePath, StringlativePath) + 61
System.Web.Mvc.PathHelpers.GenerateClientUrlInternal (HttpContextBase httpContext, String contentPath) + 424
System.Web.Mvc.PathHelpers.GenerateClientUrl (HttpContextBase httpContext, Строка contentPath) +87
System.Web.Mvc.UrlHelper.GenerateUrl (String routeName, String actionName, String controllerName, RouteValueDictionary routeValues, RouteCollection routeCollection, RequestContext requestContext, логическое значение includeImplicitMvcValues) + 295 * 1025.Ung.routeName, String actionName, String controllerName, RouteValueDictionary routeValues) +99 System.Web.Mvc.UrlHelper.Action (String actionName, String controllerName, Object routeValues) + 69
ASP.views_shared_masters_scriptinclude_ascx ._ Render(HtmlTextWriter __w, Control parameterContainer) в CENSORED \ ScriptIncludes.ascx: 2 System.Web.UI.Control.RenderChildrenInternal (HtmlTextWriter Writer, дети ICollection) + 109
System.Web.UI.Control.RenderThtxt8
System.Web.UI.Control.Render (модуль записи HtmlTextWriter) + 10
System.Web.UI.Control.RenderControlInternal (модуль записи HtmlTextWriter, адаптер ControlAdapter) + 27
System.Web.UI.Control.RenderControl (модуль записи HtmlTextWriter, адаптер ControlAdapter) + 100
System.Web.UI.Control.RenderControl (модуль записи HtmlTextWriter) + 25
System.Web.UI.Control.RenderChildrenInternal (модуль записи HtmlTextWriter для детей + 20 +)1035 * System.Web.UI.Control.RenderChildren (средство записи HtmlTextWriter) + 8
System.Web.UI.Page.Render (средство записи HtmlTextWriter) + 29
System.Web.Mvc.ViewPage.Render (средство записи HtmlTextWriter) + 56
System.Web.UI.Control.RenderControlInternal (модуль записи HtmlTextWriter, адаптер ControlAdapter) + 27
System.Web.UI.Control.RenderControl (модуль записи HtmlTextWriter, адаптер ControlAdapter) + 100
Система.Web.UI.Control.RenderControl (модуль записи HtmlTextWriter) + 25
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 3060

и определенно имеет что-то дляс перезаписью URL.

...