2009-11-18 6 views
0

식물의 개체군을 관리하는 웹 응용 프로그램을 개발 중입니다. 응용 프로그램의 한 가지 기능은 식물 간의 관계를 그래프로 볼 수있는 기능입니다. 이 시각화는 점 파일로 생성 된 다음 GraphViz를 사용하여 SVG로 변환됩니다. 결과 SVG 마크 업은 Response.Write() 기술을 사용하여 .aspx 파일을 통해 브라우저에 렌더링됩니다.Mono/Lighttpd - Response.Write()를 통해 반환 된 SVG 파일에 가비지 텍스트가 추가되었습니다.

영문 마크 업 :

<%@ 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(); 
     } 
    } 

이 기술은 (대화 상자가 저장/SVG 파일을 열려면 나 한테 물어 팝업) 내 Windows 개발 시스템에서 완벽하게 작동합니다.

그러나이 응용 프로그램을 호스팅하는 Linux 서버에 배포 할 때 페이지가 SVG 마크 업을 반환하지만 첫 번째 줄에 약 5-6 자의 가비지 문자열이 추가되어 브라우저의 구문 분석이 실패합니다 SVG 파일.

Linux 호스트는 RHEL5, Mono 1.9 및 Lighttpd (Mono와 통신하기 위해 고속 -cgi 사용)를 실행합니다.

SVG 마크 업이 Linux 서버에서 정상적으로 생성되었음을 확인했습니다. Lighttpd 대신 XSP2를 사용하여 웹 응용 프로그램을 실행하면 페이지가 예상대로 작동합니다. 가비지 라인은 SVG 마크 업이 생성 된 후 어딘가에 추가됩니다 (따라서 응답을 작성하기 전에 첫 번째 라인을 제거 할 수는 없습니다).

이 문제의 원인을 아는 사람이 있습니까? 옵션, 생각 및 생각이 크게 받았다.

감사합니다.

편집 :

문자는 내가위한 시각화를 만들 개체에 따라 달라집니다 -하지만 특정 기업에 대해 동일하게 유지됩니다. 그래서 객체 A에 대한 SVG 시각화를 만들면 첫 번째 줄에 문자열 1f35를 항상 쓰레기로 가져옵니다.

+1

매번 다른 가비지 문자를 사용합니까? 또는 같은 것들? 유니 코드 BOM? –

답변

0

최근 모노 (2.4.2.3)로 업데이트 한 다음 다시 시도하십시오. IIRC Red Hat에는 Mono 용 RPM이 없으므로이를 빌드하고 소스에서 설치해야합니다. 1.9는 끔찍한 구식입니다. Mono의 모든 부분은 그 이후로 개선되었습니다.

+0

제안 해 주셔서 감사합니다. 나는 더 최근의 Mono 버전을 빌드 할 수 없었다. 또한이 페이지는 XSP2에서 올바르게 작동합니다. 그래서 lighttpd/fast-cgi 설정과 관련이 있다고 믿습니다. (둘 다 나는 거의 경험이 없다!) – rob

+0

아마 맞을 것이다. 그러나 Mono의 fast-cgi 지원이 향상되어 업데이트가 내가 제안한 첫 번째 이유였습니다. 모노 컴파일시'./configure'는 누락되거나 오래된 종속성을 나열해야합니다. – skolima

+0

나는 새로운 버전의 모노를 만들 것을 제안 할 것이다. 컴퓨팅 부서에 여분의 윈도우 머신이 있다면, 나는 리눅스 서버를 교환 할 수있다. p – rob

3

귀하의 콘텐츠 유형이 잘못되었습니다. "image/svg + xml"이어야합니다.

+0

잘 찾아 냈다. 불행히도 문제를 해결하지는 못했지만 어쨌든 고마워요. – rob