Возникли проблемы с получением службы WCF для работы с публикацией в формате HTML Я создаю сервис SVGToPng. Служба принимает строку (данные SVG) и преобразует ее в изображение для загрузки (с диалогом сохранения файла). Сейчас все существующие сервисы настроены на использование JSON в качестве типа сообщения. Этот конкретный метод будет уникальным, тогда как мне нужно выполнить старомодную форму POST.
Вот интерфейс для службы.
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = UriTemplate.SvgExportPng, BodyStyle = WebMessageBodyStyle.Bare)]
Stream ExportSvgToPng(String svgData);
Ради тестирования у меня есть служба, которая просто читает существующий файл изображения и возвращает его (только для проверки службы). Вот код.
WebOperationContext.Current.OutgoingResponse.ContentType = "image/png";
WebOperationContext.Current.OutgoingResponse.Headers.Clear();
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-disposition", "attachment; filename=export-" + DateTime.Now.ToString("MM-dd-yyyy") + ".png");
return File.OpenRead(@"C:\tmp.png");
В моем javascript я динамически создаю форму, добавляю нужные мне значения, POST форму, затем удаляю ее из документа. Вот javascript.
form.setAttribute("method", "POST");
form.setAttribute("action", Daedalus.Current.WcfUrl + '/svg/png');
hiddenField.setAttribute("name", "svgData");
hiddenField.setAttribute("value", view.trend.getSVG());
form.appendChild(hiddenField);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
Наконец, вот сообщение об ошибке, которое я получаю в моих файлах журнала WCF.
Входящее сообщение имеет неожиданный формат сообщения «Raw». Ожидаемые форматы сообщений для операции: «Xml», «Json». Это может быть потому, что в привязке не настроен WebContentTypeMapper. См. Документацию WebContentTypeMapper для получения более подробной информации.
Любая помощь высоко ценится, заранее спасибо.