Например, необходимо на сайт добавить сервис, который будет динамически создавать изображения (.gif-формат) в ответ на запрос: "/image/logo,hello,RedOnMaroon", где logo - это тип изображения, hello - текст на изображении, Red - цвет текста, Maroon - цвет фона.
Ниже приводится метод, который необходимо добавить в
сервис:
[WebGet(UriTemplate = "/image/{id},{text},{color}On{bgcolor}")] |
public Stream GetImage(string id, string color, string bgcolor, string text) |
| var format = ImageFormat.Gif; |
| Bitmap img = new Bitmap(100, 100); |
| using (Graphics g = Graphics.FromImage(img)) |
| g.Clear(Color.FromName(bgcolor)); |
| new SolidBrush(Color.FromName(color)), |
| new RectangleF(0, 0, img.Width, img.Height)); |
| var ret = new MemoryStream(); |
| WebOperationContext.Current.OutgoingResponse.ContentType = ("image/" + format).ToLower(); |
Пример вызова метода из html:
<img src="/DataProvider.svc/image/logo,hello,WhiteOnRed" /> |
<img src="/DataProvider.svc/image/logo,привет,WhiteOnNavy" /> |
Если указать не все параметры, то клиент получит сообщение: Endpoint not found.
Если при отладке в методе GetImage вызвать img.Save("image." + format, format);, то файл будет создан в папке C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
В сервисе HttpContext.Current == null, но если: 1) добавить в web.config в configuration следующий тег:
| <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> |
2) у класса
сервиса определить атрибут AspNetCompatibilityRequirementsMode:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] |
public class DataProvider |
3) в методе GetImage можно вызвать:
var dir = HttpContext.Current.Server.MapPath("~"); |
Комментариев нет:
Отправить комментарий