Добавьте в свой проект C # взаимодействие для ASP.dll (вы найдете его в папке \ system32 \ inetsrv.
Добавить открытый метод в класс, экземпляр которого создается ASP: -
ASPTypeLibrary.ScriptingContext context;
public void OnStartPage(ASPTypeLibrary.ScriptingContext sc)
{
context = sc;
}
Теперь, когда вам нужен MapPath, используйте: -
context.Server.MapPath("...");
Примечание контекст дает вам доступ к запросу, ответу и сеансу в дополнение к серверу. OnStartPage - это взлом до COM +, который использует ASP и до сих пор работает даже в последних версиях. ASP выполняет COM-эквивалент отражения (исследуя информацию о библиотеке типов классов COM), чтобы определить, доступен ли общедоступный метод OnStartPage, и в этом случае он вызывает его, передав объект ScriptingContext.
Нет доступного .NET HttpContext, запрос должен был бы быть обработан .NET в первую очередь для того, чтобы он существовал. HttpContext не может быть создан в потоке "после факта", как это было. Следовательно, если ваш компонент должен взаимодействовать с Http-диалогом, он должен будет сделать это через объект контекста ASP, поскольку ASP является хостом, который фактически обрабатывает запрос.