У меня есть следующий сценарий. Мой код C # будет выполняться в двух процессах - один процесс будет процессом IIS, работающим под учетной записью «локальной службы», а другой будет работать под учетной записью с большими привилегиями. Оба процесса будут запускать код C #, версия .NET будет не менее 3.5.
Часть в IIS содержит набор классов, полученных из System.Web.IHttpHandler
, и каждый класс реализует метод IHttpHandler.ProcessRequest()
, который принимает параметр System.Web.HttpContext
.
Я не могу сделать ничего полезного со стороны IIS - мне нужен доступ к файловой системе, активация сервера DCOM, другие вещи, которые «локальный сервис» не может сделать по умолчанию. Так что я бы хотел как-то переадресовать эти ProcessRequest()
вызовы на ту часть, которая работает под пользователем с большими привилегиями. Мне нужно перенаправить объект в другой процесс, дождаться завершения вызова, тогда другой процесс изменит объект, и я хочу получить эти изменения на стороне вызывающего процесса - так, чтобы это выглядело как один процесс.
Я думал о WCF, но не уверен, что ему удастся справиться с распределением HttpContext
между процессами. AFAIK (может быть неправильно), чтобы тип был отмечен System.Runtime.Serialization.DataContractAttribute
([DataContract]
) для маршалинга, но HttpContext
помечается этим атрибутом.
Могу ли я сделать маршалл HttpContext
через WCF для другого процесса и обратно, чтобы изменения, сделанные вызываемым пользователем, были видны вызывающему? Какие есть лучшие варианты?