首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mono / Lighttpd -添加到通过Response.Write()返回的SVG文件的垃圾文本

Mono / Lighttpd -添加到通过Response.Write()返回的SVG文件的垃圾文本
EN

Stack Overflow用户
提问于 2009-11-18 18:32:35
回答 2查看 579关注 0票数 0

我正在开发一个管理植物种群的web应用程序。该应用程序的一个功能是能够以图形形式查看植物之间的关系。这种可视化是以点文件的形式生成的,然后使用GraphViz转换为SVG。然后,使用Response.Write()技术通过.aspx文件将生成的SVG标记呈现给浏览器。

Aspx标记:

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Visualisation.aspx.cs" Inherits="Webapp.PopulationManager.Visualisation" %>

代码背后:

代码语言:javascript
复制
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、mono1.9和Lighttpd (使用fast-cgi与Mono对话)。

我已经验证了SVG标记是在Linux服务器上干净地生成的;如果我使用XSP2而不是Lighttpd运行web应用程序,页面将按预期工作。垃圾行是在SVG标记生成之后添加的(所以我不能简单地在写出响应之前删除第一行)。

有人知道这可能是什么原因吗?选项、想法和想法都得到了极大的认可!

谢谢。

编辑:

根据我为其创建可视化的实体,这些字符会有所不同,但对于给定的实体,这些字符是相同的。因此,如果我为对象A创建一个SVG可视化,我总是会在第一行得到字符串1f35作为垃圾。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-18 20:04:56

请更新到最新的Mono (2.4.2.3),然后重试。由于IIRC Red Hat没有针对Mono的rpms,因此您必须构建它并从源代码安装。1.9已经非常过时了。从那时起,Mono的所有部分都得到了改进。

票数 0
EN

Stack Overflow用户

发布于 2009-11-19 19:54:58

您的Content-Type无效,应为"image/svg+xml“。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1755079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档