#c# #.net #asp-classic #com
#c# #.net #asp-классический #com
Вопрос:
Я реализую COM-компонент с использованием .net для нескольких устаревших компонентов для задачи миграции сервера.
Старый компонент использовался для получения пути к изображению на текущем сервере, преобразования его в формат jpeg и сохранения преобразованного изображения по тому же пути.
Это тривиально сделать в .net, однако моя главная проблема заключается в получении контекста сервера. Я не уверен, как сделать одно из следующих действий:
- сохранение изображения по тому же пути, по которому было получено исходное изображение
- или отправка изображения непосредственно в поток ответов (избегая необходимости сохранения преобразованного изображения)
Компонент вызывается на странице ASP класса (да, к сожалению!) с использованием:
Server.CreateObject("Component.Class")
Есть ли в любом случае в коде реализации .net, который я могу получить ссылку на Server
объект, создавший компонент? Я надеялся, что если я смогу получить ссылку на сервер, я смогу затем получить соответствующий контекст для обратной записи в поток ответов.
Ответ №1:
Я разобрался с этим, получив несколько подсказок для Интернета и Google. Подумал, что я должен опубликовать это на случай, если у кого-то еще возникнет такая же проблема.
Для получения контекста сервера требовалось включить следующие ссылки:
- COMSVCLib (уже должен быть в вашем разделе COM при добавлении ссылок на ваш проект)
- ASPTypeLibrary: найдите: «Библиотека объектов Microsoft Active Server Pages». Если вы не видите это сразу в своем разделе COM, вам нужно будет добавить это из «программы и компоненты Windows». Добавьте следующую функцию: Информационные службы Интернета -> Службы WWW -> ASP
Разработка вышеупомянутого была самой сложной задачей 🙂 После этого очень просто ссылаться на ваш сервер и другие встроенные объекты ASP:
COMSVCSLib.AppServer aspServer = new COMSVCSLib.AppServer();
COMSVCSLib.ObjectContext oc = aspServer.GetObjectContext();
ASPTypeLibrary.Server server = (ASPTypeLibrary.Server)oc["Server"];
Вы можете сделать то же самое с другими объектами ASP, такими как Request и Response.