Нарушение границы домена приложений на сайте ASP.NET - PullRequest
0 голосов
/ 07 ноября 2011

Я создаю интегрированную среду тестирования, предназначенную для определенной группы приложений. Среда тестирования опирается на инфраструктуру тестирования VS. Приложения субъекта тестирования являются веб-клиентами, поэтому среда тестирования должна стать веб-сервером . Чтобы удовлетворить эту потребность, я запускаю Cassini в тестовой среде, которая загружает веб-сайт во время теста. Все отлично и работает. Итак, процесс выглядит следующим образом:

  1. Тестовая среда запускает Cassini, загружает мой веб-сайт
  2. Среда тестирования запускает приложение субъекта теста, которое вызывает мой веб-сайт
  3. Тестовая среда должна сравнивать фактическое содержание сайта изменения с ожидаемыми изменениями.

Проблема возникает на шаге 3. Моя тестовая среда и Cassini работают в одном домене приложений, а веб-сайт - в другом. Как я могу прорваться через границы домена приложения?

У меня полный контроль над

  • Исходный код тестовой среды
  • Исходный код Кассини
  • Исходный код веб-сайта, загруженный Cassini

Моей первой идеей было заставить Cassini загрузить веб-сайт в свой собственный домен приложений, но я не смог этого сделать. Есть ли у вас какие-либо предложения?

1 Ответ

1 голос
/ 09 ноября 2011

Решение появилось через копание в исходном коде Cassini (Cassini не состоит из слишком большого количества кода, и его довольно легко прочитать).После обработки базовых HTTP-вызовов Cassini передает обработку ядру ASP.NET, вызывая System.Web.HttpRuntime.ProcessRequest(simpleWorkerRequest), который вызывает сайт ASP.NET. Хитрость в том, что класс HttpRuntime также предоставляет доступ к классу Cache! С небольшими изменениями исходного кода Cassini кэш сервера может быть открыт для тестовой среды.Единственное, на что нужно обратить внимание, это то, что содержимое кэша сервера пересекает границу AppDomain посредством .NET Remoting.Поэтому мы должны обращать внимание на кэшированные объекты, делающие их либо Serializable, либо MarshalByRef.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...