2013-02-18 1 views
0

У нас есть внутренний сервер работает приложение MVC3, который был сделан на нашем внешнем сервере с помощью сервера ISA.с помощью ISA, чтобы выставить внутренний сайт MVC

Однако; он не применяет CSS, поскольку ссылки на внешний сайт неправильно отображаются.

Основное различие между 2, что я могу видеть, это внутренне он работает как приложение на внутреннем сервере (http://InternalServer/MVCSite)

Внешний сервер рассматривается как работает как приложение в течение subsite (http://ExternalDomain/SubSite/MVCSite), это то, что получает мир.

глядя на источнике, URL генерируется, я могу видеть, что это ведет себя как внутреннего сайт, возвращающийся: @Url.Content("~/Content/Site.css") в /MVCSite/Content/Site.css.

И я смотрел на эту статью, чтобы увидеть, если она проливает никакого света: http://support.microsoft.com/kb/885186

Я подумал, что это может быть, что перенаправление не может обрабатывать различия в структурах сайта? Таким образом, изменение внутреннего сайта, чтобы отразить внешний макет, исправит любые применения. Внутренне InternalServer/MVCSite будет ExternalDomain/SubSite/MVCSite

Я добавлю больше, поскольку я нахожу вещи.

+1

Формулировка в этом вопросе затрудняет понимание некоторых важных вещей. Например, кажется, что у вас есть два одинаковых сайта/приложения, один из которых доступен снаружи с помощью ISA, открывая порты/протоколы до второго? - Это то, что ты хотел сказать? Правильно ли, что они оба убегают с того же сервера? Если это так, это может быть сложно с правилами ISA. Можете ли вы опубликовать правила/фильтры ISA, применяемые для разрешенного сайта? Кроме того, вы пытались запустить надстройку Fiddler, чтобы узнать, что происходит, и не пробиваться? – Lizz

+0

Я обновил вопрос, который, я думаю, ответит на некоторые из ваших вопросов. Они не работают на одном сервере. Я не могу опубликовать фильтры, которые я боюсь, что, вероятно, не поможет. Если я смогу получить некоторую помощь в понимании того, что мне нужно, чтобы попросить, чтобы сетевые парни сделали это, это поможет. –

+0

Если ISA блокирует содержимое css, это поможет опубликовать эти фильтры и правила. FYI, вопрос по-прежнему читается так, как будто оба сайта поступают с одного сервера. Можете ли вы попробовать Fiddler против обоих, чтобы увидеть разницу? – Lizz

ответ

0

Этот ответ не связан с isa, и, вероятно, существует правильный способ его настройки. Однако, если вы не можете найти правильное решение, HttpRuntime.AppDomainAppVirtualPath может вам помочь.

Вместо использования: @Url.Content("~/Content/Site.css"), вы можете попробовать @Url.Content(HttpRuntime.AppDomainAppVirtualPath + "Content/Site.css")

Если это не работает, вы можете переопределить значение AppDomainAppVirtualPath с помощью отражения. Посмотрите здесь: http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_24475811.html#a24591595.

Dim vpathTypeName As String = "System.Web.VirtualPath, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
Dim virtualPath As Object = ReflectionHelper.Instantiate(vpathTypeName, New Type() {GetType(String)}, New Object() {"/"}) 
ReflectionHelper.SetPrivateInstanceFieldValue("_appDomainAppVPath", runtime, virtualPath) 

Он в основном обновляет статическое поле с любым необходимым значением. Вы можете проверить заголовок хоста с помощью: HttpContext.Current.Request.Url.Host и установить значение / или /SubSite/

+0

Спасибо за ввод, я жду времени, чтобы исследовать эту проблему. Я добавлю это в очередь. Раздражающе, я обнаружил, что это не просто влияет на проекты MVC, это также влияет на ссылки «WebResource», которые включены элементами управления ASP.NET. –

 Смежные вопросы

  • Нет связанных вопросов^_^