Mono / Lighttpd - текст мусора, добавленный в файл SVG, возвращенный с помощью Response.Write () - PullRequest
0 голосов
/ 18 ноября 2009

Я занимаюсь разработкой веб-приложения, которое управляет популяцией растений. Одной из особенностей приложения является возможность просматривать отношения между растениями в виде графика. Эта визуализация создается в виде точечного файла, а затем превращается в 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 в качестве мусора в первой строке.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2009

Ваш тип контента недействителен, должен быть "image / svg + xml".

0 голосов
/ 18 ноября 2009

Пожалуйста, обновите Mono до версии 2.4.2.3 и повторите попытку. Поскольку IIRC Red Hat не имеет rpms для Mono, вам придется собрать его и установить из исходного кода. 1.9 ужасно устарел. Все части Mono были улучшены с тех пор.

...