Я занимаюсь разработкой веб-приложения, которое управляет популяцией растений. Одной из особенностей приложения является возможность просматривать отношения между растениями в виде графика. Эта визуализация создается в виде точечного файла, а затем превращается в SVG с помощью GraphViz. Результирующая разметка SVG затем отображается в браузере через файл .aspx с использованием метода Response.Write ().
Aspx разметка:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Visualisation.aspx.cs" Inherits="Webapp.PopulationManager.Visualisation" %>
Codebehind:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
// ...snip...
string svgString = PopulationModule.VisualiseTable(connectionTable, title, url.ToString());
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "image/svg-xml";
Response.AddHeader("Content-Disposition", string.Format("inline;filename={0}", filename));
Response.Write(svgString);
Response.Flush();
}
}
Этот метод отлично работает на моей машине для разработки Windows (появляется диалоговое окно с просьбой сохранить / открыть файл SVG).
Однако происходит сбой при развертывании на сервере Linux, на котором размещено это приложение - страница возвращает разметку SVG, но строка мусора длиной около 5-6 символов добавляется в качестве первой строки, в результате чего браузер не может выполнить синтаксический анализ SVG файл.
Хост Linux работает с RHEL5, Mono 1.9 и Lighttpd (с fast-cgi для связи с Mono).
Я проверил, что разметка SVG генерируется чисто на сервере Linux; и если я запускаю веб-приложение с XSP2 вместо Lighttpd, страница работает как положено. Строка мусора добавляется где-то после генерации разметки SVG (поэтому я не могу просто удалить первую строку перед записью ответа).
Кто-нибудь знает, что может быть причиной этого? Варианты, идеи и мысли с большим удовольствием!
Спасибо.
EDIT:
Символы различаются в зависимости от объекта, для которого я создаю визуализацию, - но остаются неизменными для данного объекта. Поэтому, если я создам SVG-визуализацию для объекта A, я всегда получу строку 1f35 в качестве мусора в первой строке.